雪花查询返回错误日期并进行转换

问题描述 投票:0回答:1

我有一个如下查询,它将日期(20190520,20050511,....)转换为 19700823。

SELECT NVL(TO_VARCHAR(ALIS.CYCAL_DATE::DATE,'YYYYMMDD'),'00000000')
FROM SCHEMA.VIEW.VIEWNAME_INDE ALIS

无论输入日期如何,我都会得到从 197008 开始的输出。我发现某些日期的最后两位数字有所不同

我知道 TO_VARCHAR(TO_DATE(ALIS.CYCAL_DATE,'YYYYMMDD'),'DDMMYYYY')。我只是想知道这种错误转换的原因。如果您见过此情况或知道原因,请分享。

snowflake-cloud-data-platform rdbms sqldatatypes
1个回答
0
投票

这不是错误的转换,而是对 Snowflake 如何解释未指定日期格式的

::date
转换的误解。 如果您要单独执行它,您会发现它实际上将该值视为整数并将其添加到默认日期时间(以秒为单位)。

select '20190520'::date,
       dateadd(s,20190520,'1970-01-01'::date);

字符串必须采用 Snowflake 期望的日期格式,例如

2019-05-20
才能使用
::date
表示法。 否则,您应该使用
TO_DATE
TRY_TO_DATE
函数并指定字符串的输入格式。

© www.soinside.com 2019 - 2024. All rights reserved.