1

我有一个表,其中有一列文本类型,用于存储NOW()插入查询中使用的各种设置,包括日期。

现在我想从该表中获取该列在特定日期之前的所有行(例如 2012-09-19)。

比较 viaDATE(date_column)<DATE(NOW())很容易,但我不知道如何传递特定日期而不是 NOW(),因为输入字符串的日期格式可能不同。

这是一个示例代码:

INSERT INTO table (date_column) VALUES (NOW())

并且在选择时:

SELECT * FROM table WHERE DATE(date_column)<DATE('2012-09-19');

编辑:上面的代码确实有效。我最初错过了日期周围的报价。


如果 date_column 确实是 DATE 类型,则不需要在其上运行 DATE()。

另请注意,在 date_column 上运行 DATE() 将阻止 MySQL 使用任何索引,因此您将进行表扫描。

尝试:

WHERE date_column < '2012-09-19'
4

2 回答 2

0

避免在列类型 ( WHERE FUNCTION(col) ...) 周围放置函数。这会降低性能。您希望拥有一个具有域完整性的表,这意味着如果您要存储日期,它就是一种date类型。

要选择与您匹配的记录date,只需将您的 YYYY-MM-DD 日期用引号括起来:

SELECT * FROM table WHERE date_column < '2012-09-19'
于 2012-09-06T02:29:40.720 回答
0

如果 date_column 确实是 DATE 类型,则不需要在其上运行 DATE()。

另请注意,在 date_column 上运行 DATE() 将阻止 MySQL 使用任何索引,因此您将进行表扫描。

尝试:

WHERE date_column < '2012-09-19'
于 2012-09-06T02:10:05.750 回答