Snowflake中TO_DATE()返回格式与指定不符的解决方法求助
Snowflake日期格式问题解决方案
问题原因
TO_DATE()函数的作用是将字符串转换为日期数据类型,而日期类型在Snowflake中是无格式的内部存储,查询输出时会默认使用ISO标准格式(YYYY-MM-DD)展示,所以你用TO_DATE()包裹格式化后的字符串,会把它转回日期类型,自然就变回默认格式了。
正确处理方式
1. 直接获取指定格式的字符串(推荐)
如果你需要的是特定格式的文本字符串,直接使用TO_VARCHAR()转换即可,不需要再用TO_DATE()包裹:
SELECT TO_VARCHAR(GETDATE(), 'DD-MON-YYYY') AS formatted_date; -- 输出示例: 04 Nov 2022
注:如果需要两位年份,把格式符改成
'DD-MON-YY'即可,输出会是04 Nov 22。
2. 修改会话默认日期显示格式(针对日期类型)
如果必须保留日期数据类型,但希望查询时默认显示为指定格式,可以修改会话级的日期输出格式:
-- 设置会话日期输出格式 ALTER SESSION SET DATE_OUTPUT_FORMAT = 'DD-MON-YYYY'; -- 直接查询日期类型,会按设置的格式显示 SELECT GETDATE() AS formatted_date; -- 输出示例: 04 Nov 2022
这个设置仅对当前会话生效,退出会话后会恢复默认。
内容的提问来源于stack exchange,提问作者Aashish Tamrakar
相关产品推荐
相关产品推荐

