【问题标题】:Prestosql converting UTC timestamp to local?Prestosql 将 UTC 时间戳转换为本地?
【发布时间】:2019-04-30 06:17:40
【问题描述】:

如何在 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 链接到时区,我可以使用它吗?

【问题讨论】:

  • 日期时间字段是否包含任何时区信息?

标签: sql data-science presto datetime-conversion trino


【解决方案1】:

来自presto's documentation

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,您可以为时间戳添加位置并获得所需的结果。

希望对你有帮助

【讨论】:

  • 我在数据集中有多个时区,而不仅仅是一个,我该怎么做?我编辑了上面的问题以显示我想在其中执行此操作的查询,如果这有意义的话? @Shubham Pandey
  • 您能否分享一些有关区域 ID 字段中值的详细信息?另外,您打算如何将具有开始和结束日期的给定行映射到相应的时区?
猜你喜欢
  • 2019-08-15
  • 2019-03-09
  • 2019-01-05
  • 2013-03-23
  • 2015-04-20
  • 2011-02-06
  • 2013-09-12
  • 2018-09-17
  • 2020-07-26
相关资源
最近更新 更多