我正在尝试在两个日期之间进行查询。日期输入为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')
答案 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')