我需要将UTC时间戳更改为“美国/东部”时间戳,而不更改日期和时间-本质上只更新时区信息,然后将其转换为不同的时区。
例如(我需要的):
'2021-06-09 19:00:36.000000‘UTC --> '2021-06-09 19:00:36.000000’美国/东部
然后我需要把它转换成'America/New_York‘。
'2021-06-09 19:00:36.000000‘美国/东部--> '2021-06-09 16:00:36.000000’美国/洛杉矶
当我尝试下面的查询时,它没有给出正确的结果,因为它是从UTC转换为美国/洛杉矶。何时应该是美国/东方到美国/洛杉矶。
SELECT id
, date_utc
, CAST(date_utc AT TIME ZONE 'America/Los Angeles') AS date_la
FROM call_records发布于 2021-06-12 03:11:34
我不确定这是否适用于雅典娜,因为它是基于一个非常旧的Presto/Trino版本。
在Trino (formerly known as PrestoSQL)的最新版本中,您可以执行以下操作:
timestamp with time zone强制转换为timestamp以删除时区部分。US/Eastern.with_timezone重新解释结果timestamp使用AT TIME ZONE更改结果D13的时区,同时保留即时。请看下面的示例:
trino:tiny> WITH t(ts) AS (VALUES TIMESTAMP '2021-06-09 19:00:36.000000 UTC')
-> SELECT with_timezone(cast(ts as timestamp(6)), 'US/Eastern') AT TIME ZONE 'America/Los_Angeles'
-> FROM t;
_col0
------------------------------------------------
2021-06-09 16:00:36.000000 America/Los_Angeles
(1 row)https://stackoverflow.com/questions/67931496
复制相似问题