我有一个包含类型文本列的表,我在插入查询中使用NOW()
存储各种设置,包括日期。
现在我想从此表中获取此列在特定日期之前的所有行(例如2012-09-19)。
通过DATE(date_column)<DATE(NOW())
进行比较很简单,但我不知道如何传递特定日期而不是NOW(),因为输入字符串的日期格式可能不同。
以下是示例代码:
INSERT INTO table (date_column) VALUES (NOW())
选择时:
SELECT * FROM table WHERE DATE(date_column)<DATE('2012-09-19');
编辑:上面的代码实际上有效。我最初错过了约会时的报价。
答案 0 :(得分:0)
如果date_column真的是DATE类型,则不需要在其上运行DATE()。
另请注意,在date_column上运行DATE()会阻止MySQL使用任何索引,因此您将进行表扫描。
尝试:
WHERE date_column < '2012-09-19'
答案 1 :(得分:0)
避免在列类型(WHERE FUNCTION(col) ...
)周围放置函数。这会降低性能。您希望拥有一个具有域完整性的表,这意味着如果您要存储日期,则它是date
类型。
要选择与date
匹配的记录,只需将YYYY-MM-DD日期包含在引号中:
SELECT * FROM table WHERE date_column < '2012-09-19'