您好,我想知道为什么这个语句在 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 个结果,但是当我将开始日期设置为“2011 年 1 月 1 日”时,它给了我在该时间跨度内创建的记录数。
关于 mySQL 的 BETWEEN 和使用不同年份的日期,我是否遗漏了什么?
感谢您的帮助!
最佳答案
尝试使用日期格式 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'
关于跨越多年的日期之间的 mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5379366/