Prestosql 将 UTC 时间戳转换为本地时间戳?

Chr*_*s90 4 sql datetime-conversion presto data-science trino

如何将包含日期和时间的时间戳字段转换为 Prestosql 中的本地时间?这些字段看起来像

Region ID  |         Start Time utc       |       End Time utc
abc           2019-04-26 20:00:00.000   2019-04-26 23:00:00.000
cdx           2019-02-27 23:30:00.000   2019-02-28 01:00:00.000
Run Code Online (Sandbox Code Playgroud)

我有区域 IDS,因此如果需要或者如果这样更容易,我可以在查询中输入该行所需的时区 ID。

我只想返回该时区的本地开始和结束时间。

查询是

SELECT table1.*
FROM table1
WHERE table1.day = date '2019-04-03' AND
     NOT EXISTS (SELECT 1
                 FROM table2
                 WHERE table1.id = table2.id AND
                       table1.timestamp >= table2.start_time AND
                       table1.timestamp <= table2.end_time
                 )
Run Code Online (Sandbox Code Playgroud)

其中表 2 是我想要转换为当地时间的开始和结束时间...

其中 utc 时间位于开始时间和结束时间的不存在子句中,我如何将其更改为当地时间?在美国,不是所有时间都是相同的时区?有一个区域 ID 字段,我可以使用该字段将该区域 ID 链接到时区,我可以使用它吗?

Shu*_*dey 6

来自presto 的文档

SELECT timestamp '2012-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles';

2012-10-30 18:00:00.000 America/Los_Angeles
Run Code Online (Sandbox Code Playgroud)

由于您当前的时间戳已经采用 UTC 格式,因此您可以添加时间戳的位置并获得所需的结果。

希望这可以帮助