我正在尝试选择特定日期之后的所有列,但诀窍是“日期”列是 varchar
我有这个
SELECT * FROM `users` WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > '10-10-2000'
例如,我想选择所有生日在 2000 年 10 月 10 日之后的用户,但这只会返回所有行。
有人知道出了什么问题吗?
您正在比较数据和字符串。我会使用CAST
:
WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > CAST('2000-10-10' AS date)
另请注意,我更改了第二个的格式以匹配 mysql 的期望。您也可以在此处使用 STR_TO_DATE。
我们需要知道字符串生日的格式,现在你说它是例如 2001 年 12 月 31 日。那正确吗?
如果您有多个字符串,请考虑使用相同的 STR_TO_DATE 格式:
WHERE STR_TO_DATE(birthday, '%m/%/d/%Y') BETWEEN STR_TO_DATE(some_date, '%m/%/d/%Y')
AND STR_TO_DATE(another_date, '%m/%/d/%Y')
更多信息: http ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
I think mysql dates are usually yyyy-mm-dd which means you should change the string at the end to 2000-10-10.
Try that and let me know if that works.