mysql日期与格式之间不工作

mysql日期与格式之间不工作,mysql,sql,date,between,Mysql,Sql,Date,Between,我有这个疑问 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 `us

我有这个疑问

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\u format()
的第一个参数。

这就是为什么永远不应该将日期存储为字符串。日期是MySQL中的头等公民。将日期存储为日期,并从MySQL内置的日期功能中获益。将
dob
字段转换为
date
字段。同样值得一提的是:此版本也可以更快,因为它不需要完整的表扫描。