【问题标题】:MySQL Return Today's Records Using DATE from DATETIME FieldMySQL 使用 DATETIME 字段中的 DATE 返回今天的记录
【发布时间】:2012-10-22 02:01:29
【问题描述】:

我有一个名为“actions”的表,其中有一个名为“occurred”的DATETIME 列。我正在尝试通过执行以下操作来返回今天的记录

SELECT * FROM `actions` WHERE `occurred` = DATE(NOW());

但是我得到一个空的结果集。如果我去掉 WHERE 子句,我可以看到表中的所有 295 行,并且从今天开始至少有 30 行。稍后我将编写另一个查询来返回今天日期和过去 X 天之间的所有记录,但在我到达那里之前,我需要知道为什么这个查询返回一个空的结果集。

提前致谢。

【问题讨论】:

    标签: mysql sql date datetime where


    【解决方案1】:
    SELECT * FROM actions WHERE DATE(ocurred) = CURDATE();
    

    DATE(ocurred) 忽略时间部分。

    这是用于处理数据的 SQL Fiddle:http://www.sqlfiddle.com/#!2/81708/2

    【讨论】:

      【解决方案2】:

      如果occurred 中没有未来的日期,您可以使用以下:

      SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY);
      

      【讨论】:

      • 这很好用。不会有未来的数据。它将严格用于将 NOW 与历史条目进行比较。感谢您的快速回复!
      猜你喜欢
      • 1970-01-01
      • 2014-07-06
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多