Snowflake中TIMESTAMP转DATE报错问题排查与解决
错误原因及解决方案
问题根源
你的SQL语句存在两处语法问题,和TIMESTAMP转DATE的功能无关:
- 遗漏了
AS关键字:使用CTAS(Create Table As Select)语法创建表时,必须用AS连接目标表名与SELECT子句; - 计算列未指定别名:
to_DATE(COLUMN_B_TS)是动态生成的计算列,Snowflake无法自动为其分配合法列名,因此触发"Missing column specification"错误。
Snowflake中TIMESTAMP转DATE的说明
Snowflake对TIMESTAMP_NTZ(9)转DATE没有任何限制,to_DATE()函数可以直接处理该类型,会自动提取时间戳中的日期部分(例如你提供的"2012-04-25 00:00:00.000"会被转换为DATE类型的2012-04-25)。
正确的SQL语句
补全AS关键字并为计算列添加别名即可解决问题,示例如下:
CREATE OR REPLACE TABLE "WH_A"."SCHEMA_A"."NEW_TABLE" AS SELECT COLUMN_A, to_DATE(COLUMN_B_TS) AS COLUMN_B_DATE, COLUMN_C FROM "WH_A"."SCHEMA_A"."EXISTING_TABLE"
你可以根据实际需求修改别名(比如改为AS COLUMN_B),只要确保每个列都有明确的名称即可。
内容的提问来源于stack exchange,提问作者DolphinLei
相关产品推荐
相关产品推荐

