0

我正在尝试选择特定日期之后的所有列,但诀窍是“日期”列是 varchar

我有这个

SELECT * FROM `users` WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > '10-10-2000'

例如,我想选择所有生日在 2000 年 10 月 10 日之后的用户,但这只会返回所有行。

有人知道出了什么问题吗?

4

3 回答 3

2

您正在比较数据和字符串。我会使用CAST

WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > CAST('2000-10-10' AS date)

另请注意,我更改了第二个的格式以匹配 mysql 的期望。您也可以在此处使用 STR_TO_DATE。

于 2012-09-03T18:11:06.320 回答
0

我们需要知道字符串生日的格式,现在你说它是例如 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

于 2012-09-03T18:16:30.857 回答
0

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.

于 2012-09-03T18:09:58.550 回答