我有一个正在 where 子句中进行日期比较的函数,该子句仅在年份是字符串的第一部分时才有效。 crDate 字段是一个 DATETIME,所以下面的两个不应该工作吗?
and crDate between '2009/01/01' and '2009/01/21'
and crDate between '01/01/2009' and '01/21/2009'
if 在我看来,这两个语句是相同的,但第一个返回预期结果,第二个返回 0 条记录。
mySQL 中是否有一个设置可以关闭或打开,从而使这些功能有所不同?
最佳答案
MySQL 不够智能,无法解析所有可能的日期格式。连人都不够聪明——10/01/2012
是1月10日还是10月1日?您必须执行适当的 conversion from string或依赖默认格式,通常为 YYY-MM-DD
:
mysql> SELECT @@date_format;
+---------------+
| @@date_format |
+---------------+
| %Y-%m-%d |
+---------------+
关于mysql - sql 日期比较仅在年份为第一时才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610254/