【发布时间】:2019-11-13 05:31:41
【问题描述】:
我有一个固定日期(比如'2019-10-01'),我想根据time_zone 列中的值将其转换为多个时区,如下所示:
values (1, 'Asia/Jakarta'), (2, 'Asia/Manila')
-- 1 Asia/Jakarta
-- 2 Asia/Manila
当然可以存储具有每行时区的列:
values (timestamp '2019-10-01' at time zone 'Asia/Jakarta')
union all
values (timestamp '2019-10-01' at time zone 'Asia/Manila')
-- 2019-10-01 07:00:00.000 Asia/Jakarta
-- 2019-10-01 08:00:00.000 Asia/Manila
但我看不出有什么方法可以有效地完成这项工作。
从datetime help page 我看到了两条途径:
- 使用
AT TIME ZONE不起作用 - 需要字符串文字,不是列:
select timestamp '2019-10-01' AT TIME ZONE tz
from (values ('Asia/Jakarta'), ('Asia/Manila')) t(tz)
-- line 1:44: no viable alternative at input 'TIME ZONE tz'
- 使用
from_unixtime不起作用 - 只能从 unix 时间开始工作,但这是针对当前问题的 Catch 22 - 获得正确的 UTC 时间正是我们的目标。
我还缺少其他方法吗?
【问题讨论】:
标签: presto