【问题标题】:Trouble converting malformed ISO8601-formatted varchar to timestamp将格式错误的 ISO8601 格式的 varchar 转换为时间戳时出现问题
【发布时间】:2021-03-28 21:56:19
【问题描述】:

我试图将具有以下格式的时间戳字符串转换为时间戳格式,但遇到如下错误:

Invalid format: "20201216T090000+0000" is malformed at "0000+0000"

原始查询

SELECT from_iso8601_timestamp(date_ts)
FROM
...

我想应用 substr 来仅将 20121216T09 作为字符串检索,我知道它可以与 from_iso8601_timestamp 一起使用。但任何其他建议将不胜感激!

【问题讨论】:

  • 一个可能的 ISO 8601 时间戳可能是 '2020-12-16T09:00:00+00:00'。但是,ANSI SQL 不喜欢 optional T,所以我会选择 '2020-12-16 09:00:00+00:00'

标签: sql string datetime presto trino


【解决方案1】:

from_iso8601_timestamp() 支持破折号和冒号格式:

presto> SELECT from_iso8601_timestamp('2020-12-16T09:00:00+00:00');
            _col0
-----------------------------
 2020-12-16 09:00:00.000 UTC

如果输入格式类似于20201216T090000+0000parse_datetime() 会更合适。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多