【问题标题】:Snowflake Timestamp with Timezone issues带有时区问题的雪花时间戳
【发布时间】:2024-01-23 06:39:01
【问题描述】:

当使用 ISO TIMESTAMP Foramts 的文档掩码时,我认为雪花格式时间戳与时区不正确

alter session set TIMESTAMP_NTZ_OUTPUT_FORMAT ='YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM';
select "last_update" from "sakila1"."actor" limit 1

结果

2006-02-15"T"12:34:33.000000000+00:00

请注意,在输出中,“T”被引号包围,我认为正确的输出应该是

2006-02-15T12:34:33.000000000+00:00

“T”周围没有引号。

使用 YYYY-MM-DDTHH24:MI:SS.FFTZH:TZM 的掩码似乎会产生正确的输出,但这与文档及其遵循的标准相冲突。

【问题讨论】:

    标签: formatting timestamp snowflake-cloud-data-platform


    【解决方案1】:

    文档确实指定 note beneath the format list 中的引号是可选的,并且只是建议使用它们来消除歧义。但是,我看到了与您相同的问题。我想知道那一点文档是否已过时。无论哪种方式,我认为您可以使用不带引号的T

    为了完整起见,我也在 TO_TIMESTAMP() 中看到了这一点

    select to_timestamp(current_timestamp::timestamp_ntz::string, 'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM');
    

    给予

    2020-01-03"T"10:56:55.028000000+00:00
    

    【讨论】:

    • 我认为在“T”周围带有引号的值不符合标准,并且会导致 XML 解析器和其他期望 ISO 兼容值的软件阻塞。但是,在定义掩码时应该存在引号,至少在我一直使用的其他 RDBMS 产品中它们是必需的。我认为这是一个需要修复的错误,否则它会在未来的某个时候回来并咬人
    • 由于您提到的原因,即使您有解决方法,也可能值得为潜在错误提交支持案例。
    • 如果您不介意分享此案的解决方案,请通过分享知识来帮助社区。谢谢!