【发布时间】: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 合作
【问题讨论】:
我的时间戳来自:2021-12-20T18:00:55.126X
我想更改表单并仅显示日期和时间,这样它就会变成 2021-12-20 18:00:55 挑战是我还想显示日期和时间 + X 天。例如,添加 5 天,我希望它显示 2021-12-25 18:00:55。这种情况有没有好的解决办法?
*我与 Presto 合作
【问题讨论】:
去掉 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
【讨论】:
您可以从字符串中删除X 并使用from_iso8601_timestamp 来解析时间戳:
select from_iso8601_timestamp(replace('2021-12-20T18:00:55.126X', 'X', ''))
要添加天数,您可以使用interval 或date_add:
select now() + interval '1' day, date_add('day', 1, now())
【讨论】: