我有一个如下查询,它将日期(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 如何解释未指定日期格式的
::date
转换的误解。 如果您要单独执行它,您会发现它实际上将该值视为整数并将其添加到默认日期时间(以秒为单位)。
select '20190520'::date,
dateadd(s,20190520,'1970-01-01'::date);
字符串必须采用 Snowflake 期望的日期格式,例如
2019-05-20
才能使用 ::date
表示法。 否则,您应该使用 TO_DATE
或 TRY_TO_DATE
函数并指定字符串的输入格式。