MYSQL:使用 date_format 查询两个日期之间的数据不起作用
Posted
技术标签:
【中文标题】MYSQL:使用 date_format 查询两个日期之间的数据不起作用【英文标题】:MYSQL: Query data between two dates using date_format doesn't work 【发布时间】:2014-02-22 19:24:17 【问题描述】:我正在尝试在两个日期之间进行查询。日期输入为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')
【问题讨论】:
这是从前到后的。此外,您有一个 STRing,您想将其解释为 DATE(看看我在那里做了什么?) 【参考方案1】:当您使用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')
【讨论】:
感谢您的回复。我根据您的想法得到了解决方案。以上是关于MYSQL:使用 date_format 查询两个日期之间的数据不起作用的主要内容,如果未能解决你的问题,请参考以下文章