MYSQL选择特定日期后的行(行类型为varchar)

时间:2012-09-03 18:04:43

标签: mysql date varchar

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

我有这个

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

作为示例,我想选择生日在10/10/2000之后的所有用户,但这只返回所有行。

任何人都知道什么是错的?

3 个答案:

答案 0 :(得分:2)

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

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

另请注意,我更改了第二种格式以匹配mysql所期望的格式。你也可以在这里使用STR_TO_DATE。

答案 1 :(得分:0)

我认为mysql日期通常是yyyy-mm-dd,这意味着你应该把结尾处的字符串更改为2000-10-10。

尝试一下,如果有效,请告诉我。

答案 2 :(得分: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