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中对其进行过滤即可。