字符型日期字段惹的祸
今天项目中定时任务报错,影响报表数据;日志表看到错误
ORA-01839: date not valid for month specified
起初怀疑是Oracle的bug;……省略一千字,最后发现是在表中掏出两条’2009-02-29′这样的字符型日期数据……
出于应用可以跨数据库的角度,表中日期型数据都使用varchar2存储,留下了隐患。
这是一个教训:日期型数据就要用日期类型字段存储,记得在tom的书中有类似的描述!
否则可能导致的后果:
- 可能进入脏数据
- 也可能导致CBO选择错误的执行计划