【问题标题】:How to check if a date is between two dates mysql?如何检查日期是否在两个日期之间mysql?
【发布时间】:2017-07-07 23:12:08
【问题描述】:

我正在从 mysql 数据库中查询日期。当我尝试仅选择某个开始日期和某个日期之间的日期时,我没有得到预期的结果。

我的查询:

select * from tbl_billing where date BETWEEN '09-02-2017' and '10-02-2017'

我的输出:

09-02-2017
10-02-2017
10-01-2017
09-01-2017
09-01-2017

我想要的结果:

09-02-2017
10-02-2017

【问题讨论】:

  • 你的mysql表中日期字段的类型是什么?
  • 'dd-mm-yyyy' 不是有效的 MySQL date literal

标签: mysql date-formatting date-range


【解决方案1】:

你可以使用规范的sql日期格式

select * from tbl_billing where date BETWEEN '2017-02-09' and '2017-02-10'

或使用 str_to_date 正确转换

select * from tbl_billing where date BETWEEN str_to_date('09-02-2017', '%d-%m-%Y')
            and  str_to_date('10-02-2017', '%d-%m-%Y')

但如果您的 date 也是 varchar,那么您也必须转换此列

select * from tbl_billing where str_to_date(date,'%d-%m-%Y')  BETWEEN str_to_date('09-02-2017', '%d-%m-%Y')
            and  str_to_date('10-02-2017', '%d-%m-%Y')

【讨论】:

  • hello roman 感谢我的建议,但问题是我的日期数据类型是 varchar,我无法更改它,因为我在许多页面中使用过,因此无法更改数据类型 varchar 至今。如果您有任何解决方案,请告诉我罗马先生
  • @phpguru 更改它。更改页面。否则没有'大师'!
  • @phpguru 如果您还有日期列作为 varchar,那么您也必须转换该列 .. 回答已更新 .. 让我知道
  • 嘿草莓,请深入学习 php,否则没有草莓只有棒棒糖,我用我自己的登录名得到...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2012-11-13
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多