Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4010598
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: Oracle

2024-06-21 10:35:58

今天同事告诉我加载程序报错:
ORA-01841: (full) year must be between -4713 and +9999, and not be 0

确认是insert操作报错,后来转换为delete加载时候还存在这个报错。
本能的怀疑时间字段有问题,时间非法。

后来查到发现一个很有趣的事情:
说是Oracle date类型不能储存时间字段0年,但他怎么就储存进去了呢?后来了解到通过sysdate运算得到的,详细见下面测试示例:



后来我用to_char()转换后这个数据既然后面月、时、分、 ... 全变成了,而且Oracle还不报错。

是不是可以说:Oracle数据库在实际写入数据前没有做合法性检查,或者检查的不严格,导致非法数据也可以储存到数据库里面,最后用起来就是各种奇怪的问题了。
阅读(216) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~