WHERE `time` BETWEEN 'Jan 1 %' AND 'Jan 8 %' AND ...
結果
Jan 1 00:33:23
Jan 10 08:52:05
1月10日の結果を回避するにはどうすればよいですか?
%、<=などのいくつかの異なる組み合わせを試しました。
何か案は?
ありがとう
WHERE Time >= '1/1/2011' AND Time < '1/9/2011'
または、任意の年の結果が必要な場合:
WHERE DATEPART( month, Time ) = 1 AND DATEPART( day, Time ) < 9
現在、このクエリでは、「between」は数字や日付で使用するように設計されているのに対し、文字列で使用するため、検索エンジンを混乱させます。
あなたの問題には2つの解決策があります:
1)「時刻」フィールドを「日付」に変換し、日付を「01-01-2010 00:00」として保存します(これは、DBに日付フィールドであることを認識させるため、最も健全なソリューションです)2)試してください:
WHERE `time` >= 'Jan 1' AND `time` < 'Jan 2'
2番目のソリューションは、2つの日付ではなく、2つの文字列を比較しているため、奇妙な結果をもたらす可能性があります。
ここでは試すことができませんが、STR_TO_DATEメソッドを試してみませんか?時間フィールドを実際の日付に変更でき、その文字列比較を行う必要はありません。
WHERE STR_TO_DATE(`time`,'%d,%m,%Y') BETWEEN
'2010-01-01'
AND
'2010-01-09'
また、http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-dateを参照してください。