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 57

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 DATE_ADD(eventdate, INTERVAL 1 DAY)

MySQL doc

так, как это как я бы сделал это :)

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

вы можете попробовать это:

SELECT DATE(DATE_ADD(m_inv_reqdate, INTERVAL + 1 DAY)) FROM  tr08_investment
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 day");

или, проще:

date("Y-m-d H:i:s", time()+((60*60)*24));