【问题标题】:Snowflake - convert string to datetime雪花 - 将字符串转换为日期时间
【发布时间】:2021-06-28 08:03:43
【问题描述】:

我正在使用雪花,并且我将日期作为这种格式的字符串

'2021-04-01 08:00:05.577209+00'

我想将它转换为日期时间。我使用下面的代码来执行此操作(我首先从每个字符串中修剪 '+00')。但是我认为我定义它有点错误,所以我不断收到错误。

TO_TIMESTAMP_NTZ(left(ts,len(ts)-4),'YYYY-MM-DD HH24:MI:SS.FF'),

【问题讨论】:

    标签: datetime time timestamp snowflake-cloud-data-platform sql-timestamp


    【解决方案1】:
    1. 最好使用left(ts,len(ts)-3)而不是left(ts,len(ts)-4)来修剪最后3个字符。

    2. 您能否检查您的数据并确保它是“2021-04-01 08:00:05.577209+00”,因为它按预期工作(两者都经过测试):

      选择 ts, left(ts,len(ts)-3) 修剪, TO_TIMESTAMP_NTZ(left(ts,len(ts)-3),'YYYY-MM-DD HH24:MI:SS.FF') 结果 从值 ('2021-04-01 08:00:05.577209+00') tmp (ts);

    结果:

    +-------------------------------+----------------------------+-------------------------+
    |              TS               |          TRIMMED           |         RESULT          |
    +-------------------------------+----------------------------+-------------------------+
    | 2021-04-01 08:00:05.577209+00 | 2021-04-01 08:00:05.577209 | 2021-04-01 08:00:05.577 |
    +-------------------------------+----------------------------+-------------------------+
    

    【讨论】:

    • 嗨,不幸的是我仍然收到错误 无法将 '"2021-03-31 17:00:20.975882' 解析为时间戳,格式为 'YYYY-MM-DD HH24:MI: SS.FF'
    【解决方案2】:

    为什么要关闭+00?就这样做吧:

    select to_timestamp_ntz('2021-04-01 08:00:05.577209+00', 'YYYY-MM-DD HH24:MI:SS.FF+00')
    

    【讨论】:

    • 嗨@simon,当我使用你的代码时,我得到以下错误 Can't parse '"2021-03-31 20:00:33.205903+00"' as timestamp with format 'YYYY -MM-DD HH24:MI:SS.FF+00'
    • 你能显示你的确切代码吗?因为这对我有用:select to_timestamp_ntz('2021-03-31 20:00:33.205903+00', 'YYYY-MM-DD HH24:MI:SS.FF+00');
    • 只是补充一点,@SimonDarr 提出的解决方案也适用于我。
    • 我从 Azure Data Lake 下载数据并创建外部表。这只是 csv 文件 2021-04-01 08:00:11.211201+00 中的日期格式。我在雪花中为本专栏使用的代码如下所示 TO_TIMESTAMP_NTZ((value: c4::STRING),'YYYY-MM-DD HH24:MI:SS.FF+00')
    • 请分享完整的 SQL 和返回的错误信息
    【解决方案3】:

    我找到了我的问题的答案。我正在从 Azure Data Lake 上的 CSV 文件中读取数据,但我没有注意到列中的引号。当我删除它们时,一切正常。

    【讨论】:

    • 这就是我让你检查你的数据的原因:)
    猜你喜欢
    • 2019-07-30
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多