MySQL NOW() плюс/минус интервал

Для того чтоб вычислить дату "вчера", "завтра", "неделю назад" и т.п. можно воспользоваться функциями NOW() - для даты и времени или CURDATE() И параметром INTERVAL, предварительно передав эти параметры в функцию ADDATE, более понятно описано ниже на примерах:

Например, NOW() + INTERVAL 1 DAY

Функция MySQL ADDDATE(NOW(), INTERVAL)
Из MySQL docs:
When invoked with the INTERVAL form of the second argument, ADDDATE() is a synonym for DATE_ADD(). The related function SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see the discussion for DATE_ADD().

SELECT DATE_ADD('2011-04-02', INTERVAL 31 DAY); - '2011-05-02'
SELECT ADDDATE('2011-04-02', INTERVAL 31 DAY); - '2011-05-02'

When invoked with the days form of the second argument, MySQL treats it as an integer number of days to be added to expr.

SELECT ADDDATE('2011-04-02', 31); - '2011-05-02'
 Еще пример:
DATE_SUB(NOW(), INTERVAL 1 DAY) - вернет дату "вчера"

6 comments:

  1. А как именно в WHERE их использовать при выборке?

    ReplyDelete
  2. Напишите пожалуйста запрос, куда нужно их вставить

    ReplyDelete
  3. Такой пример:
    SELECT * FROM `board_items` WHERE DATE_ADD(`datetime`, INTERVAL `actuality` MONTH) > NOW();

    Выбор актуальных объявлений, в поле `actuality` количество месяцев активности объявления.

    ReplyDelete
  4. скажите, а можно настроить такой интервал, только не от текущего времени, а от значения времени предыдущего элемента в таблице?

    ReplyDelete
  5. SELECT ADDDATE('2011-04-02', INTERVAL 31 DAY); - '2008-05-02'
    Результат разве не '2011-05-02' ?

    ReplyDelete
    Replies
    1. Верно, исправил. Спасибо!

      Delete