检查MysQL中的日期是Upcoming还是Past

时间:2013-07-16 00:33:52

标签: mysql sql

我在表格中有两列

  • event_date(价值是2013年9月22日)
  • event_time(价值是晚上7:11)

现在我想写一个查询,该查询应该返回在Future或Past

中有时间和日期的行

我写了这样的东西

select * from events e 
where concat(e.event_date,' ',e.event_time) <= date_format(now(),'%m/%d/%Y  %g:%i %a')

但它没有用,它只是其中一个你永远不知道它们有什么问题的东西

提前致谢!

3 个答案:

答案 0 :(得分:5)

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

这样做的好处是可以使用event_date上可能存在的任何索引。

答案 1 :(得分:1)

select * from events e where TIMESTAMP(e.event_date,e.event_time) <= NOW()

答案 2 :(得分:0)

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