我在大规模的IT支持环境中工作.现在两次我们看到在Oracle DATE列中插入了无效日期02/31/2157.到目前为止,我还没有能够重现这个问题,但是当用户试图将’00 / 00/0000’保存到列中时,它似乎偶尔会发生.我相信这个价值来自PowerBuilder DataWindow更新.
该应用程序使用各种各样的技术库,所以这个问题可能有点模糊,但……
有没有人在某个已建立的库中看到日期02/31/2157,当输入其他无效日期时,Oracle可能会默认为某个库?也许是一个类似于1970年1月1日开始日期的时间概念?
解决方法
从
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#i1847“
Oracle uses its own internal format to
store dates. Date data is stored in
fixed-length fields of seven bytes
each,corresponding to century,year,
month,day,hour,minute,and second.
2157-256 = 1901,似乎可疑地接近可能的1/1/1900(或12/13/1901 – 这是Year 2038 Problem的展期日期)
我猜它在日期字节中存储0x00或0xFF,然后在解码它时感到困惑. (它如何处理255个月?)