按 Unix 时间戳中的时隙分组
Posted
技术标签:
【中文标题】按 Unix 时间戳中的时隙分组【英文标题】:Group by time slots from Unix timestamp 【发布时间】:2015-12-24 03:04:12 【问题描述】:我将日期/时间保存为 Unix 时间戳(13 位)。我要做的是按时间段/范围对行进行分组。例如,如下所示,
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
我真的对如何处理这个问题一无所知?有什么建议?谢谢。
【问题讨论】:
timestamp % 86400 是从午夜开始以秒为单位的一天中的时间(在 GMT 时区)... @henry 如何按范围分组? 您可以使用每个存储桶一个元素的数组。循环遍历记录,确定桶并增加相应的数组元素。 【参考方案1】:使用strftime()
从时间戳中提取小时数。
要获得四小时范围的数字,请除以四。 (需要偏移量,因为范围未与一天的开始对齐。)
SELECT ...
FROM ...
GROUP BY strftime('%H', timestamp, 'unixepoch', '+2 hours') / 4
【讨论】:
有没有办法在查询本身中考虑时区? 所以对于 GMT + 5.30,它将是 'unixepoch', '+5.30 hours') / 4 ? 否;+2
用于从凌晨 2 点开始的时段。您必须结合两个偏移量。
谢谢。因此,如果我理解正确,对于从早上 6 点和 GMT+5.30 时区开始的时段,偏移量应为“+11.30 小时”以上是关于按 Unix 时间戳中的时隙分组的主要内容,如果未能解决你的问题,请参考以下文章