我有一个应用程序存储来自美国各地车辆的远程信息处理。美国有多个时区,车辆可以在活动时处于活动状态并跨时区移动。我希望能够查询“昨天”并计算所有车辆已激活的所有“激活时间”。
Amazon Timestream 中的所有“时间”都作为时间戳存储在 UTC 中,因此我无法将时区偏移量添加到时间中。
原始数据:
车辆 | 全部小时数 | 时间 |
---|---|---|
美国广播公司 | 10 | 2021-03-20T20:00:00 EST |
美国广播公司 | 20 | 2021-03-21T10:00:00 EST |
美国广播公司 | 30 | 2021-03-21T18:00:00 EST |
定义 | 40 | 2021-03-21T02:00:00 EST |
定义 | 50 | 2021-03-21T15:00:00 EST |
定义 | 60 | 2021-03-21T20:00:00 EST |
存储数据:
车辆 | 测量名称 | 测量值::双 | 时间 |
---|---|---|---|
美国广播公司 | 全部小时数 | 10 | 2021-03-21 01:00:00 |
美国广播公司 | 全部小时数 | 20 | 2021-03-21 15:00:00 |
美国广播公司 | 全部小时数 | 30 | 2021-03-21 23:00:00 |
定义 | 全部小时数 | 40 | 2021-03-21 10:00:00 |
定义 | 全部小时数 | 50 | 2021-03-21 23:00:00 |
定义 | 全部小时数 | 60 | 2021-03-22 04:00:00 |
询问:
SELECT vehicle, SUM('measure_value::double') AS totalHours
FROM "Database"."Table"
WHERE time BETWEEN '2021-03-18 00:00:00' AND '2021-03-18 23:59:59' AND measure_name = 'totalHours'
GROUP BY vehicle
预期的:
车辆 | 全部小时数 |
---|---|
美国广播公司 | 50 |
定义 | 150 |
回报:
车辆 | 全部小时数 |
---|---|
美国广播公司 | 60 |
定义 | 90 |
- 如果我在 UTC 时间查询,它将过期 5-8 小时。
- 如果我在东部时间 (UTC+5) 进行查询,那么在加利福尼亚 (UTC+8) 运行的任何车辆都将在 4 小时内获取数据。
我如何在所有时区查询昨天而不单独查询所有时区?