雪花:无法将'0000-00-00 00:00:00'解析为格式为 'AUTO' 的时间戳



如何解决从雪花存储过程收到的此错误

错误:第xx行位置xx处类型为"STATEMENT_Error"的未捕获异常:无法将"0000-00-00 00:00:00"解析为格式为"AUTO"的时间戳。

我尝试在SELECT中使用以下语句进行转换

1:TO_TIMESTAMP('01-25-2019 23:25:1120','MM-DD-YYYY HH24:MI:SS.FF'(;

2:TO_DATE(左(时间戳,10(,'YYYY-MM-DD'(

这里什么都不管用。我知道这里的DateTime是"0000-00-00 00:00:00",所以如果有任何可能的解决方法的话。

TIA-

Snowflake无法识别该值的时间戳。

因此,一个格式如下的值:

select '2022-01-01 00:00:00'::timestamp;

工作良好,而您的价值:

select '0000-00-00 00:00:00'::timestamp;

投掷:

Timestamp '0000-00-00 00:00:00' is not recognized

对于DATE和TIMESTAMP数据,Snowflake建议使用1582到9999之间的年份。Snowflake接受这个范围之外的年份,但由于公历的限制,应该避免1582年之前的年份。

有关更多信息,请查看此处。

正如Sergiu已经提到的,Snowflake建议使用1582年至9999年之间的年份。

更重要的是,0年的第一秒应该是0000-01-01 00:00:00。因此"0000-00-00 00:00:00"不是有效的日期/时间。

select dateadd( 'seconds', -1, TO_TIMESTAMP('0000-01-01 00:00:00' ));
-0001-12-31 23:59:59.000

为了防止在这个";"无效时间戳";,可以使用TRY_TO_TIMESTAMP函数:

select TRY_TO_TIMESTAMP('0000-01-01 00:00:00'); -- returns NULL

https://docs.snowflake.com/en/sql-reference/functions-conversion.html#error-处理转换功能

最新更新