如何在过去30天内仅获取特定时段的数据

时间:2013-09-30 22:32:36

标签: mysql timestamp between

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

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点之间。

我该怎么做?

2 个答案:

答案 0 :(得分: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") 

答案 1 :(得分: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)