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 查询两个日期之间的数据不起作用的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的DATE_FORMAT()用法

未绑定命名参数:Spring Boot 中的 DATE_FORMAT 本机查询

Mysql怎么查询一天每个时间段的数据;

mysql怎么查询上一周的数据

mysql按照日期方式查询

在 MYSQL 中加入具有 SUM 问题的表