2012-10-16 105 views
8

我有一個選擇MySQL日期範圍的問題。使用date_format選擇日期範圍MySQL

SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y') 
    FROM (`immmvt`) 
WHERE date_format(MvtDate,'%d-%m-%Y') BETWEEN '01-01-2010' AND '02-01-2010' 

mvtDate類型是像2010-01-01 00:00:00這樣的日期。

當我運行查詢時,結果適用於日期和月份,但它也顯示了其他年份的其他結果。

01-01-2011

+0

比較的'DATE'時間日期是更好的相比有什麼你在嘗試。 – hjpotter92

回答

11

你應該使用STR_TO_DATE因爲要string轉換回date

SELECT MvtDate, date_format(MvtDate,'%d-%m-%Y') 
FROM `immmvt` 
WHERE MvtDate BETWEEN STR_TO_DATE('01-01-2010','%d-%m-%Y') AND 
         STR_TO_DATE('02-01-2010','%d-%m-%Y') 
 
FYI: DATE_FORMAT() converts date to formatted string representation. 
    STR_TO_DATE() converts formatted string back to date 
+0

我感覺不好,謝謝:) – user1749399

2
SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y') 
    FROM (`immmvt`) 
WHERE date_format(MvtDate,'%d-%m-%Y') IN ('01-01-2010', '02-01-2010') 
+0

這是我發現的最好的答案,它非常快。 –