6

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

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

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

提前致谢。

4

2 回答 2

8
SELECT * FROM actions WHERE DATE(ocurred) = CURDATE();

DATE(ocurred)忽略时间部分。

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

于 2012-10-22T02:14:22.647 回答
6

如果没有将来的日期occurred,您可以使用以下内容:

SELECT * FROM `actions` WHERE `occurred` > DATE_SUB(CURDATE(), INTERVAL 1 DAY);
于 2012-10-22T02:04:57.957 回答