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