MySQL: как добавить один день в поле datetime в запросе
в моей таблице у меня есть поле с именем eventdate
на как 2010-05-11 00:00:00
.
как сделать запрос, чтобы он добавлял один день до eventdate
например, если сегодня 2010-05-11
, Я хочу показать в where
предложение вернуть все записи с завтрашней датой.
обновление:
Я попытался это:
select * from fab_scheduler where custid = 1334666058 and DATE_ADD(eventdate, INTERVAL 1 DAY)
но, к сожалению, он возвращает ту же запись, даже если я добавляю интервал больше, чем 1.
результат:
2010-05-12 00:00:00
но я хочу выбрать записи с датой завтрашнего дня.
8 ответов:
можно использовать
DATE_ADD()
функция:... WHERE DATE(DATE_ADD(eventdate, INTERVAL -1 DAY)) = CURRENT_DATE
Он также может быть использован в
SELECT
о себе:SELECT DATE_ADD('2010-05-11', INTERVAL 1 DAY) AS Tomorrow; +------------+ | Tomorrow | +------------+ | 2010-05-12 | +------------+ 1 row in set (0.00 sec)
так, как это как я бы сделал это :)
SELECT * FROM fab_scheduler WHERE custid = '123456' AND CURDATE() = DATE(DATE_ADD(eventdate, INTERVAL 1 DAY))
если вы можете использовать сейчас() это будет самая простая форма:
SELECT * FROM `fab_scheduler` WHERE eventdate>=(NOW() - INTERVAL 1 DAY)) AND eventdate<NOW() ORDER BY eventdate DESC;
С MySQL 5.6 + запрос abowe должен делать. В зависимости от sql server может потребоваться использовать
CURRDATE()
вместоNOW()
- который является псевдонимом дляDATE(NOW())
и вернет только дату частьdatetime
тип данных;
можно использовать определенный синтаксис MySQL sugar:
SELECT ... date_field + INTERVAL 1 DAY
выглядит гораздо красивее вместо функции DATE_ADD
Как насчет этого:
select * from fab_scheduler where custid = 1334666058 and eventdate = eventdate + INTERVAL 1 DAY