执行TO_TIMESTAMP函数遇无效值None报错,请求技术支持
问题排查与解决方案
报错原因
你的mydate字段中存在值为None的记录,TO_TIMESTAMP函数要求输入字符串必须匹配YYYY-MM-DD HH24:MI:SS格式,None无法被解析为合法的年份整数,因此触发22007(无效日期/时间格式)错误。
解决方法
过滤无效值:查询时直接排除
mydate为None或空的记录SELECT TO_TIMESTAMP(mydate, 'YYYY-MM-DD HH24:MI:SS') AS mydate FROM cte3 WHERE mydate IS NOT NULL AND mydate != 'None';转换无效值:保留所有记录,将无效值转为
NULL或指定默认日期SELECT CASE WHEN mydate IS NOT NULL AND mydate != 'None' THEN TO_TIMESTAMP(mydate, 'YYYY-MM-DD HH24:MI:SS') ELSE NULL -- 可替换为你需要的默认日期,例如 '1970-01-01 00:00:00' END AS mydate FROM cte3;修复源数据:如果
None是错误存储值,修改CTE定义替换无效值WITH cte3 AS ( SELECT CASE WHEN your_source_column = 'None' THEN NULL ELSE your_source_column END AS mydate FROM your_original_table ) SELECT TO_TIMESTAMP(mydate, 'YYYY-MM-DD HH24:MI:SS') AS mydate FROM cte3;
内容的提问来源于stack exchange,提问作者knows not much
相关产品推荐
相关产品推荐

