12

我在一个表中有两列

  • 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')

但它没有用,它只是你永远不知道它们有什么问题的事情之一

提前致谢!

4

3 回答 3

11
SELECT * 
FROM Events
WHERE event_date < CURRENT_DATE()
      OR (event_date = CURRENT_DATE() AND event_time <= CURRENT_TIME())
   

这具有使用任何可能存在于event_date.

于 2013-07-16T00:49:37.787 回答
3
select * from events e where TIMESTAMP(e.event_date,e.event_time) <= NOW()
于 2013-07-16T00:46:39.370 回答
0

如果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演示

于 2013-07-16T00:50:08.480 回答