2012-08-17 107 views
1

我有一列是一个字符串,它拥有价值这样的:11.05.2012 05:22:12MySQL:比较日期字符串?

现在我想的是在该列中一个date <= 30.09.2011所有行。我试过

DATE_FORMAT(my_column_with_the_string_date, "%Y-%m-%d") <= '2011-09-30' 

但是这个失败(没有返回结果)。有任何想法吗?

+0

为什么失败?没有返回行?或者给你一个错误? – 2012-08-17 12:43:11

+0

是的,没有行返回 – user1540714 2012-08-17 12:45:17

回答

14

你需要的是STR_TO_DATE()函数。

SELECT 
* 
FROM yourTable 
WHERE 
STR_TO_DATE(my_column_with_the_string_date, '%d.%m.%Y') <= '2011-09-30' 

了解更多关于它here

+0

作品,谢谢! – user1540714 2012-08-17 12:48:39

+1

这不是最好的性能,因为您在my_column_with_the_string_date上对所有单元格进行了转换。在大表中,它将会非常低。 您应该转换字符串,而不是 – 2014-05-14 12:17:07

+1

我们在这里有一个范围比较。比较字符串而不是日期时,你会得到错误的结果。 – fancyPants 2014-05-14 17:58:41