我有这个查询

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


但是它没有回报!我究竟做错了什么!!??

最佳答案

为什么要选择一个完美的日期并将其转换为(不好的)字符串以进行比较?

将比较作为日期进行,并按正确的顺序放置常量:

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


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

我假设dob确实是一个日期,因为那是date_format()函数用于其第一个参数的原因。

关于mysql - mysql date_format之间不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22207469/

10-13 00:48