2012-10-16 18 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

からstringを変換したいので、 'DATE'時間の日付の比較ですが、何に比べて優れているSTR_TO_DATEを使用する必要がありますあなたは試しています。 – hjpotter92

答えて

11

あなたが戻って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

これは私が非常に迅速であることがわかった最高の答えです。 –

関連する問題