首页 文章

跨越多年的日期之间的mySQL

提问于
浏览
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'时,它给了我在该时间 Span 中创建的记录数 .

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

谢谢您的帮助!

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'
    
  • 1

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

相关问题