【问题标题】:How to select a record with upcoming date and time?如何选择即将到来的日期和时间的记录?
【发布时间】:2013-08-31 11:58:00
【问题描述】:

我有这张表叫events。此表在单独的列中包含 event_dateevent_time。我目前正在处理一个页面,它将显示所有即将发生的事件。如何从events 表中查询日期和时间仍将到来的记录?我的意思是,如何使用 MySQL 计算或编写查询,特别是 where 子句?我正在使用 PHP 和 CodeIgniter。

感谢所有愿意回答的人。

编辑:我使用了 Gordon Linoff 的建议:

where event_date >= now() or
      (event_date = date(now()) and event_time > time(now()))

但我修改为

where event_date>date(now()) or
      (event_date=date(now()) and event_time>time(now()))

因为 Gordon's 没有完全返回我所期望的结果(日期为当天但时间尚未到来的事件不会显示为即将发生的事件)。无论如何,感谢戈登和其他回答的人。我还不是 MySQL 日期查询方面的专家,所以你们帮了我一个大忙。

【问题讨论】:

  • 您想要WHERE 子句还是ORDER BY 功能?
  • 即将举行的活动意味着与今天相比,它的日期在未来。因此它将类似于WHERE date_column > NOW()
  • 您使用什么数据类型来存储日期和时间部分?
  • 或者您可能需要从现在开始的所有事件,而不是过去的事件?
  • 如果是同一天但时间还没有到@N.B.怎么办?

标签: php mysql codeigniter date


【解决方案1】:
SELECT * FROM events where event_date > DATE(NOW()) AND event_time > TIME(NOW());

【讨论】:

  • 这对于第二天早上 8:00 的内容将失败(假设您在 8:00 之后查询),并且对于当天 17:00 的内容也会失败(如果在 17 点之前查询: 00)
【解决方案2】:

你会使用:

where event_date >= now() or
      (event_date = date(now()) and event_time > time(now()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 2019-09-06
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多