Oracle日期格式(full) year must be between -4713 and +9999异常与如何查找不规范数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyang1354/article/details/79475503

SELECT TO_DATE(time, 'yyyy-mm-dd hh24:mi:ss')  FROM DB WHERE  id = 1;

SQL如上,异常信息:

ORA-01841: (full) year must be between -4713 and +9999, and not be XXX

这种情况基本上就是要格式化的数据是错的,那么怎么来查哪些数据是错的

SELECT * FROM DB WHERE ID not in (

SELECT id FROM DB WHERE  REGEXP_LIKE(time, '^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}')

查询出不是日期格式的数据,观察下其结果构成,一般情况下可能存在非日期类型,比如("XXXX")

一般的,如果说这个地段存储日期的话,不能存其他的样式的数据,这种应该在业务方面控制好的,既然发生了,

在SQL中对其进行过滤即可。

猜你喜欢

转载自blog.csdn.net/wangyang1354/article/details/79475503