【问题标题】:How to adjust timestamp timezone offset for YYYY-MM-DD''T''HH:mm:ss.SSSZ format timestamp in presto?如何在 presto 中调整 YYYY-MM-DD''T''HH:mm:ss.SSSZ 格式时间戳的时间戳时区偏移量?
【发布时间】:2022-06-22 05:30:36
【问题描述】:

我有一个带有时间戳字符串的数据集,例如 '2022-05-25T13:31:22.566-0400' 我想将其转换为 '%Y-%m-%dT%H:%i:%s' 格式,但要根据时区差异进行调整。

那么对于以上内容,如何在 Presto 中将 '2022-05-25T13:31:22.566-0400' 转换为 '2022-05-25T17:31:22.566'

非常感谢!

【问题讨论】:

  • 您希望将初始时间数据转换到哪个时区?
  • 任何时区都可以工作,我正在尝试计算两次之间的差异,但它们是不同的时区 - 希望转换为相同的时区。谢谢!

标签: sql timestamp timezone presto timezone-offset


【解决方案1】:

您可以使用from_iso8601_timestamp 解析日期,然后转换为timestamp 以删除时区信息(将被视为UTC,at time zone 'UTC' 应该具有相同的效果)并使用date_format 来获取所需的输出格式:

select date_format(
        cast(from_iso8601_timestamp('2022-05-25T13:31:22.566-0400') as timestamp),
        '%Y-%m-%dT%H:%i:%s')

或者

select date_format(
    from_iso8601_timestamp('2022-05-25T13:31:22.566-0400') at time zone 'UTC', 
    '%Y-%m-%dT%H:%i:%s')

输出:

_col0
2022-05-25T17:31:22

【讨论】:

  • hmm 看起来它对我不起作用,它只是删除了时区而没有调整时间:select date_format(cast(from_iso8601_timestamp('2022-05-25T13:31:22.566-0400') as timestamp),'%Y-%m-%dT%H:%i:%s') 输出:2022-05-25T13:31:22
  • @HaoXu select current_timezone()返回什么?
  • @HaoXu 也可以试试select date_format( from_iso8601_timestamp('2022-05-25T13:31:22.566-0400') at time zone 'UTC', '%Y-%m-%dT%H:%i:%s')
  • ^这行得通!非常感谢!
  • @HaoXu 很高兴为您提供帮助!如果答案对您有用,请将其标记为an accepted one(答案旁边的复选标记)。
猜你喜欢
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2023-03-26
  • 2018-08-15
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多