MYSQL:使用date_format在两个日期之间查询数据不起作用

时间:2014-02-22 19:24:17

标签: mysql sql

我正在尝试在两个日期之间进行查询。日期输入为String格式,%d/%b/%y,这些格式来自选择框。

SELECT * FROM `Data`
WHERE DATE_FORMAT(`date`, '%d/%b/%Y') 
BETWEEN '25/Feb/2008' AND '04/Mar/2008'

我从上面的查询中得不到任何结果。但是,以下查询给了我一些结果:

SELECT * FROM `Data`
WHERE DATE_FORMAT(`date`, '%d/%b/%Y') 
BETWEEN '25/Feb/2008' AND '28/Feb/2008'

我认为发生问题是因为它比较了文本而不是Date格式。我一直在寻找一个小时。任何帮助将非常感激。

编辑:最后,我发现解决方案如下。

SELECT * FROM `Data`
WHERE DATE(`Begin`) BETWEEN STR_TO_DATE('25/Feb/2008', '%d/%b/%Y') AND 
STR_TO_DATE('04/Feb/2008', '%d/%b/%Y') 

1 个答案:

答案 0 :(得分:3)

当您使用date_format时,您将date转换为varchar,这意味着您对其进行的所有比较都将是词典,而不是基于日期的。相反,您应该将字符串文字转换为日期:

SELECT * 
FROM   `data`
WHERE  `date` BETWEEN STR_TO_DATE('25/Feb/2008', '%d/%y/%m') AND 
                      STR_TO_DATE('28/Feb/2008', '%d/%y/%m')