За последние 24 часа нас посетили 18623 программиста и 1604 робота. Сейчас ищут 954 программиста ...

if по дате (пример 2012-11-14 16:07:45)

Тема в разделе "PHP для новичков", создана пользователем Колбася, 8 янв 2013.

  1. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Подскажите как сделать вот есть в базе столбцы и в них есть запись даты: 2012-11-14 16:07:45

    Нужно сделать запрос такой к базе
    если дата не равна сегодняшней и она +- 15 дней от сегодняшней даты тогда идет запрос
    как сделать такой запрос? :)

    Добавлено спустя 8 минут 9 секунд:
    Вот нашел немного:

    Примеры запросов с BETWEEN и без него:

    # Поле created_at - тип DATETIME
    # КОРРЕКТНЫЕ ЗАПРОСЫ

    # 1: Индексы для created_at поля не используются.
    # Условие BETWEEN '2008-08-14' AND '2008-08-23'
    # преобразуется в BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 00:00:00'.
    SELECT * FROM news
    WHERE DATE(created_at) BETWEEN '2008-08-14' AND '2008-08-23';

    # 2: Оператор BETWEEN не используем, но тоже не самый лучший вариант, индексы не используются
    SELECT * FROM news
    WHERE DATE(created_at) >= '2008-08-14' AND DATE(created_at) <= '2008-08-23';

    # 3: Строки '2008-08-14 00:00:00' и '2008-08-23 23:59:59' не приведены к типу данных DATE
    SELECT * FROM news
    WHERE created_at BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 23:59:59';

    # 4: Самый лучший вариант, привели к типу DATETIME, индексы будут использоваться
    SELECT * FROM news
    WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s')
    AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');


    #############################
    # НЕПРАВИЛЬНЫЕ ЗАПРОСЫ

    # 5: Строки '2008-08-14' и '2008-08-23' преобразуются в TIMESTAMP и дополняются '00:00:00'
    SELECT * FROM news
    WHERE created_at >= '2008-08-14' AND created_at <= '2008-08-23';

    # 6: Аналогично запросу 5
    SELECT * FROM news
    WHERE created_at BETWEEN STR_TO_DATE('2008-08-14', '%Y-%m-%d') AND STR_TO_DATE('2008-08-23', '%Y-%m-%d');
    Получаем самый лучший запрос:

    SELECT * FROM news
    WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s')
    AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');


    а как взять дату сегодняшнею и загнать её в $ разницу от сегодняшнего +- 15 дней как эту дату создать? =/

    Добавлено спустя 33 минуты:
    Что-то по подобию этого
    Код (PHP):
    1. SELECT * FROM `table` WHERE `date`  BETWEEN 15 DAYS DATE(NOW() AND AFTER 15 DAYS DATE(NOW()
    Или как? =)

    Добавлено спустя 2 минуты 11 секунд:
    date у меня timestamp по умолчанию - CURRENT_TIMESTAMP
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  3. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Ай спасибо :) Ай тарагой Вай вай !сделал так -
    and `date` >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А как добавлять в избранное?
     
  5. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ты в том смысле, чтоб я кнопку такую на сайт прикрутил?

    или чтоб юзер мог пометить какие то задачи и они у него висели где-то отдельно на сайте?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Кнопку
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ок, сделаю