【问题标题】:MYSQL: Query data between two dates using date_format doesn't workMYSQL:使用 date_format 查询两个日期之间的数据不起作用
【发布时间】: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(看看我在那里做了什么?)

标签: mysql sql


【解决方案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')

【讨论】:

  • 感谢您的回复。我根据您的想法得到了解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2014-06-28
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多