Sql Oracle日期数据类型的范围:“0”;公元前4712年1月1日至公元9999年12月31日;,这个范围背后有什么逻辑吗?

Sql Oracle日期数据类型的范围:“0”;公元前4712年1月1日至公元9999年12月31日;,这个范围背后有什么逻辑吗?,sql,oracle,Sql,Oracle,Oracle日期数据类型的范围:“公元前4712年1月1日至公元9999年12月31日”,该范围是否有任何逻辑依据? 我的意思是,这个范围有任何历史意义,或者它与编程和内存大小等有关。 我只是想知道,为什么只从公元前4712年1月1日到公元9999年12月31日。我怀疑它将易于形成的上限设置为最高的4位数年份,然后根据基础类型的容量推断范围的开始。这就是朱利安日期 维基百科上说是4713,嗯…差一点 我猜上限是因为4位数 甲骨文医生说 朱利安日期允许连续约会 从一个普通的 参考资料。(参考号

Oracle日期数据类型的范围:“公元前4712年1月1日至公元9999年12月31日”,该范围是否有任何逻辑依据? 我的意思是,这个范围有任何历史意义,或者它与编程和内存大小等有关。
我只是想知道,为什么只从公元前4712年1月1日到公元9999年12月31日。

我怀疑它将易于形成的上限设置为最高的4位数年份,然后根据基础类型的容量推断范围的开始。

这就是朱利安日期

维基百科上说是4713,嗯…差一点

我猜上限是因为4位数

甲骨文医生说

朱利安日期允许连续约会 从一个普通的 参考资料。(参考号为 公元前01-01-4712年,所以当前日期 大约有240万人 射程。)

编辑

我猜4712而不是4713的原因是转换需要Y>=-4712:


4712:看看朱利安日:


9999:以4位数字表示的最高值-在今年年底,我们将有另一个“milleniumbug”

这似乎是合乎逻辑的!非常感谢。Date类使用的日期包括0年。所以公元前1年变成0年,公元前2年变成1年,公元前3年变成2年,依此类推。因此,公元前4713年成为公元前4712年。