8

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など。

4

2 に答える 2

12

に変換し直しSTR_TO_DATEたいので使用する必要がありますstringdate

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')
参考:DATE_FORMAT()は、日付をフォーマットされた文字列表現に変換します。
     STR_TO_DATE()は、フォーマットされた文字列を日付に変換します
于 2012-10-16T08:42:58.160 に答える
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')
于 2012-10-16T08:46:56.203 に答える