如何在Snowflake中为日期字段加整数?SQL语句报错求助
Snowflake日期过滤报错的解决方法
错误原因
你写的'2022-10-26' + 30会被Snowflake错误解析:它把字符串里的连字符当作减号,计算2022 - 10 - 26 = 1986,接着尝试把这个整数转成日期,从而触发类型不匹配的错误。
正确写法
以下两种方法都能实现给日期加30天的过滤需求:
方法1:用DATEADD函数(推荐)
这是Snowflake处理日期增减的标准方式,语法清晰不易出错:
AND CAST(DATETIME AS DATE) >= DATEADD(DAY, 30, '2022-10-26')
也可以先把字符串转成DATE类型再计算,效果完全一致:
AND CAST(DATETIME AS DATE) >= DATEADD(DAY, 30, TO_DATE('2022-10-26'))
方法2:使用INTERVAL语法
直接给日期加上指定时长的间隔:
AND CAST(DATETIME AS DATE) >= TO_DATE('2022-10-26') + INTERVAL '30 DAY'
额外优化
如果你的DATETIME字段本身就是日期或时间戳类型,CAST(DATETIME AS DATE)可以简化为DATETIME::DATE,甚至直接用DATETIME(仅日期比较场景下)。
内容的提问来源于stack exchange,提问作者Justine Mit
相关产品推荐
相关产品推荐

