我在一个表中有两列
- event_date(值为 09/22/2013)
- event_time(值为 7:11 PM)
现在我想编写一个查询,它应该返回具有未来或过去时间和日期的行。
我写了这样的东西
SELECT *
FROM events e
WHERE CONCAT(e.event_date, ' ', e.event_time) <= DATE_FORMAT(NOW(), '%m/%d/%Y %g:%i %a')
但它没有用,它只是你永远不知道它们有什么问题的事情之一
提前致谢!
SELECT *
FROM Events
WHERE event_date < CURRENT_DATE()
OR (event_date = CURRENT_DATE() AND event_time <= CURRENT_TIME())
这具有使用任何可能存在于event_date.
select * from events e where TIMESTAMP(e.event_date,e.event_time) <= NOW()
如果event_date和的值event_time按照您展示的方式存储,则可能的解决方案
选择过去的事件
SELECT *
FROM events
WHERE STR_TO_DATE(CONCAT(event_date, ' ', event_time), '%m/%d/%Y %h:%i %p') < NOW()
选择未来事件
SELECT *
FROM events
WHERE STR_TO_DATE(CONCAT(event_date, ' ', event_time), '%m/%d/%Y %h:%i %p') > NOW()
这是SQLFiddle演示