【问题标题】:Between mysql date_format not workingmysql date_format 之间不起作用
【发布时间】:2014-03-05 19:35:50
【问题描述】:

我有这个问题

SELECT * 
FROM `users_profile` 
WHERE DATE_FORMAT(dob,'%d-%m-%Y') BETWEEN '05-03-1996' AND '05-03-1915'

这应该返回两个结果,这两个结果都在 dob 列中有这些日期

08-02-1996
14-02-1996

但它不返回任何东西!我做错什么了!!??

【问题讨论】:

  • 这就是为什么你永远不应该将日期存储为字符串的原因。日期是 MySQL 中的一等公民。将您的日期存储为日期,并从 MySQL 的内置日期功能中获益。
  • dob 字段转换为DATE 字段。

标签: mysql sql date between


【解决方案1】:

你为什么要取一个非常好的日期并将其转换为一个(坏的)字符串进行比较?

以日期的形式进行比较,并将常量按正确的顺序排列:

SELECT * 
FROM `users_profile` 
WHERE dob BETWEEN date('1915-03-05') and date('1996-03-05');

另请注意,我将日期常量的日期格式更改为 YYYY-MM-DD。这是日期的 ISO 标准格式。 (尽管如此),使用它确实是一个好主意。

我假设 dob 确实是一个日期,因为这是函数 date_format() 的第一个参数。

【讨论】:

  • 另外值得一提的是:这个版本也可以更快,因为它不需要全表扫描。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多