【问题标题】:Group by time slots from Unix timestamp按 Unix 时间戳中的时隙分组
【发布时间】: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 如何按范围分组?
  • 您可以使用每个存储桶一个元素的数组。循环遍历记录,确定桶并增加相应的数组元素。

标签: android sqlite epoch


【解决方案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 小时”
猜你喜欢
  • 2012-03-30
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2012-04-17
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多