【问题标题】:Transform timestamp to date&time将时间戳转换为日期时间
【发布时间】:2024-11-17 07:30:02
【问题描述】:

我的时间戳来自:2021-12-20T18:00:55.126X

我想更改表单并仅显示日期和时间,这样它就会变成 2021-12-20 18:00:55 挑战是我还想显示日期和时间 + X 天。例如,添加 5 天,我希望它显示 2021-12-25 18:00:55。这种情况有没有好的解决办法?

*我与 Presto 合作

【问题讨论】:

    标签: sql timestamp presto


    【解决方案1】:

    去掉 T 和 X,转换为时间戳并添加间隔 5 天:

    select cast(regexp_replace('2021-12-20T18:00:55.126X','^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}\.\d{3})X$','$1 $2') as timestamp) + interval '5' day
    

    结果:

    2021-12-25 18:00:55.126
    

    如果你想要它作为字符串而不是毫秒,你可以格式化它:

    select format_datetime(( cast(regexp_replace('2021-12-20T18:00:55.126X','^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}\.\d{3})X$','$1 $2') as timestamp) + interval '5' day),'yyyy-MM-dd HH:mm:ss')
    

    结果:

    2021-12-25 18:00:55
    

    【讨论】:

      【解决方案2】:

      您可以从字符串中删除X 并使用from_iso8601_timestamp 来解析时间戳:

      select from_iso8601_timestamp(replace('2021-12-20T18:00:55.126X', 'X', ''))
      

      要添加天数,您可以使用intervaldate_add

      select now() + interval '1' day, date_add('day', 1, now())
      

      【讨论】: