2015-09-26 136 views
0

我有日期/时间保存为Unix时间戳(13位数字)。我想要做的是按时间段/范围对行进行分组。例如,像下面这样,从Unix时间戳组的时间槽

total_order | time_slot 
    24    10 AM - 2 PM 
    36    2 PM - 6PM 
    30    6 PM- 10PM 
    42    10PM - 2AM 
    28    2AM - 6AM 
    8    6AM - 10AM 

我真的对如何处理这个问题留有空白吗?有什么建议么?谢谢。

+1

时间戳%86400是一天的午夜以来秒的时间(GMT时间)... – Henry

+0

@henry怎么办我按范围分组? – redGREENblue

+1

您可以使用每个存储桶有一个元素的数组。循环遍历记录,确定桶并增加相应的数组元素。 – Henry

回答

1

使用strftime()从时间戳中提取小时。 要获得四小时范围的数字,除以四。 (需要的偏移,因为范围不alignted的一天的开始。)

SELECT ... 
FROM ... 
GROUP BY strftime('%H', timestamp, 'unixepoch', '+2 hours')/4 
+0

有什么办法来解决查询本身的时区问题吗? – redGREENblue

+1

调整偏移量。 –

+0

因此对于格林威治标准时间+ 5.30,它将是'unixepoch','+5.30小时')/ 4? – redGREENblue