2012-08-17 77 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