You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake日期转换查询异常:输入任意日期均返回1970开头结果求因

错误日期转换的原因解析

问题根源是ALIS.CYCAL_DATE::DATE这个隐式转换的逻辑不符合你的预期:

  • 如果CYCAL_DATE是数字类型(INT/BIGINT等),Snowflake将数字转DATE时,会把数值当作Unix纪元(1970-01-01 00:00:00 UTC)以来的秒数来计算,而不是把它当成YYYYMMDD格式的日期数字。
  • 你输入的20190520、20050511这类数值,换算成秒数的话,对应的日期都是1970年8月(2000万秒约等于231-233天,1970年1月1日加上这个天数正好落在8月),所以输出会统一以197008开头,末尾两位随具体数值对应的秒数不同略有差异。

而你用的正确写法TO_DATE(ALIS.CYCAL_DATE,'YYYYMMDD')是显式指定格式的转换,它明确告诉Snowflake:输入的CYCAL_DATE(不管是数字还是字符串)要按照YYYYMMDD的格式解析成日期,因此能正确识别目标日期,再转成字符串就不会出现错误。

内容的提问来源于stack exchange,提问作者vishnusai6923

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:17:15