我有一个高级搜索功能,可以根据日期和时间查询记录。我想返回一个日期时间范围之间的所有记录,然后从该范围内我想将结果缩小到一个小时范围(例如 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' )