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

Snowflake中DD-MM-YYYY格式日期转YYYY-MM-DD方案咨询

Snowflake跨表日期关联转换方案

错误根因

Tab1的Col1实际存储格式为DD-MM-YYYY,你之前的写法要么输入格式参数与实际不匹配,要么存在语法错误,导致Snowflake无法识别输入的日期值。

可行转换方案

方案1:标准日期类型关联(推荐,性能最优)

直接将Tab1的Col1转换为Snowflake标准日期类型,和Tab2的日期类型Col2直接关联即可,无需额外转字符串:

SELECT *
FROM Tab1
INNER JOIN Tab2
  ON TO_DATE(Tab1.Col1, 'DD-MM-YYYY') = Tab2.Col2;

方案2:兼容脏数据的关联方式

如果Tab1的Col1存在不符合格式的脏数据,可以用TRY_TO_DATE避免查询中断,转换失败的行返回null不会关联上:

SELECT *
FROM Tab1
INNER JOIN Tab2
  ON TRY_TO_DATE(Tab1.Col1, 'DD-MM-YYYY') = Tab2.Col2;

方案3:字符串格式匹配关联

如果Tab2的Col2是YYYY-MM-DD格式的字符串类型,可以将Tab1的Col1转成对应格式的字符串再关联:

SELECT *
FROM Tab1
INNER JOIN Tab2
  ON TO_CHAR(TO_DATE(Tab1.Col1, 'DD-MM-YYYY'), 'YYYY-MM-DD') = Tab2.Col2;

原有写法报错原因

  • TO_TIMESTAMP_NTZ(Date(DOS, 'YYYY-MM-DD')):DATE函数指定的输入格式为YYYY-MM-DD,和Col1实际的DD-MM-YYYY格式不匹配,导致日期识别失败
  • Date((DOS, 'YYYY-MM-DD'):存在语法错误,多了一层左括号,同时输入格式参数错误
  • TO_Varchar(Date(DOS, 'DD-MM-YYYY'),'YYYY-MM-DD'):语法逻辑接近正确,大概率是执行时存在拼写错误或者字段引用错误,该写法可以正常运行,但直接用日期类型关联性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:18:02