【发布时间】:2015-10-12 15:47:20
【问题描述】:
我注意到 MySQL 中关于 WHERE 子句中带有日期的查询的一些奇怪行为。我对 MySQL 还很陌生,所以我想知道这是否是预期的行为,或者我可以做些什么来解决这个问题。
以下查询返回表中的所有内容,就好像根本没有日期参数一样。我得到日期为 1997 年和 2015 年以上的结果。
select * from shipments where file_creation_date > 9/12/2014
select * from shipments where file_creation_date > 2014-9-12
select * from shipments where file_creation_date > 2014-09-12
以下查询可以正常工作:
select * from shipments where file_creation_date > '2014-9-12'
select * from shipments where file_creation_date > '2014-09-12'
注意日期是如何格式化为字符串的。该列的数据类型为 DATE,格式为 yyyy-mm-dd。您希望实际日期可以正常工作,但由于某种原因,它只有在我将其设为具有正确格式的字符串时才有效。
我们目前使用的数据库接受几乎任何格式的日期,如日期或字符串,并且查询工作正常。当数据类型为 DATE 时,为什么 MySQL 只接受格式非常明确的字符串?我可以做些什么来改变这一点吗?
谢谢
【问题讨论】:
-
我知道的所有数据库都接受日期作为字符串(好吧,一个例外是 MS Access)。