日付と時刻に基づいてレコードをクエリする高度な検索機能があります。日時範囲内のすべてのレコードを返し、その範囲内から結果を時間の範囲に絞り込みたい (たとえば、2012 年 5 月 1 日から 2012 年 5 月 7 日までのレコードを午後 2 時から午後 7 時まで表示する)。
私がしたことは、データベースに時間フィールドを追加し、AND ステートメントを使用して時間フィールドを確認することでした。これは、さまざまなタイムゾーンから調整するために、日時フィールドを時間数だけオフセットし始めるまではうまくいきました。これに関する問題は、時間フィールドが 6 時間オフセットされている場合です。たとえば、<=2pm<=7pm のような有効な時間クエリが <=8pm<=1am になり、ゼロの結果が返されます。
これを行うより良い方法はありますか?
クエリ:
SELECT Id, Item,
LEFT(DAYNAME(Date - INTERVAL 0 HOUR),3) as DayofWk,
CONCAT('$',FORMAT(Sale,2)) AS Sale,
CONCAT('$',FORMAT(Retail,2)) AS Retail,
Date, Time, Winner
FROM masterdata2
WHERE Item LIKE '%xbox%'
AND Date BETWEEN CONCAT('2010-6-28', ' ', '00:00:00') + INTERVAL 0 HOUR
AND CONCAT ('2012-7-9',' ','23:59:00') + INTERVAL 0 HOUR
AND time BETWEEN CONCAT ('2010-6-28',' ','00:00:00') + INTERVAL 0 HOUR
AND CONCAT ('2012-7-9',' ','23:59:00') + INTERVAL 0 HOUR
AND ( Dayofwk != 'Mon' || Dayofwk != 'Tue' || Dayofwk != 'Wed' || Dayofwk != 'Thu' || Dayofwk != 'Fri' || Dayofwk != 'Sat' || Dayofwk != 'Sun' )