1

我有一些程序,它们的时间如下:

P1:下午 5 点至晚上 8 点
P2:晚上 8 点至凌晨 1 点
P3:凌晨 2 点至凌晨 4 点

假设对于 P2,我必须获得最近 30 天的记录。我正在使用这个查询。

select * from {table} 
WHERE timestamp BETWEEN '01-09-2013 8pm' AND '30-09-2013 1am'

但是,该查询返回 P2 时间之外的记录,因为我正在使用between.

我想获得 30 天的记录,但它也应该仅限于每天晚上 8 点到凌晨 1 点之间的记录。

我怎样才能做到这一点?

4

2 回答 2

1

最简单的方法是:

select * from {table} 
WHERE timestamp BETWEEN '01-09-2013' AND '30-09-2013'
AND DATE_FORMAT(timestamp,'%H') in ("20","21","22","23","00") 
于 2013-10-18T06:59:50.850 回答
0
Select * from {table} 
WHERE FROM_UNIXTIME(timestamp) BETWEEN '01-09-2013' AND '01-10-2013' 
AND (FROM_UNIXTIME(timestamp,'%H')>=20 OR FROM_UNIXTIME(timestamp,'%H')<=1) 
于 2013-09-30T22:43:08.257 回答