3

如何在 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

我有 Region 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
                 )

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

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

4

1 回答 1

4

来自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

由于您拥有的当前时间戳已经是 UTC,您可以添加时间戳的位置并获得所需的结果。

希望这可以帮助

于 2019-04-30T06:37:45.070 回答