0

嗨,我想知道为什么这个语句在 mySQL 中有效

SELECT COUNT(*) AS `numrows` 
FROM (`myTable`) 
WHERE DATE_FORMAT(creationDateTime, '%m/%d/%Y') BETWEEN '02/21/2011' AND '03/20/2011'

但这不是

SELECT COUNT(*) AS `numrows` 
FROM (`myTable`) 
WHERE DATE_FORMAT(creationDateTime, '%m/%d/%Y') BETWEEN '12/21/2010' AND '03/20/2011'

第一条语句返回行数的“xx”计数,而第二条语句返回“0”

我看到的唯一区别是“开始”日期是 2010 年,而“结束”日期是 2011 年。为了测试这是否是我从 '12/31/2010' 查询的问题,它仍然给了我 0 个结果,但是当我将开始日期设置为“01/01/2011”时,它给了我在该时间段内创建的记录数。

关于 mySQL 的 BETWEEN 和使用不同年份的日期,我有什么遗漏吗?

谢谢您的帮助!

4

2 回答 2

3

尝试使用日期格式BETWEEN '2010-12-21' AND '2011-03-20'。同时删除 DATE_FORMAT() 函数。

所以这:

SELECT COUNT(*) AS `numrows` 
FROM `myTable` 
WHERE creationDateTime BETWEEN '2010-12-21' AND '2011-03-20'
于 2011-03-21T14:58:02.057 回答
1

DATE_FORMAT() 返回一个字符串,而不是日期。通过使用它,您将强制进行字符串比较而不是日期比较。您应该省略 DATE_FORMAT 并改用 YYYY-MM-DD 日期字符串。

于 2011-03-21T15:01:57.437 回答