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

Cha*_*aru 5 sql oracle

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

Mar*_*and 3

那是朱利安日期吗?

http://en.wikipedia.org/wiki/Julian_day

维基百科说 4713,嗯...落后 1...

我猜上限只是因为 4 位数字。

甲骨文文档说

http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/datatype.htm#i1847

儒略日期允许根据共同参考的天数进行连续约会。(参考时间为公元前 4712 年 1-01-4712 年,因此当前日期大约在 240 万年范围内。)

编辑

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

http://en.wikipedia.org/wiki/Julian_day#Converting_Julian_calendar_date_to_Julian_Day_Number

  • _Date 类_ 使用 [天文年份编号](https://en.wikipedia.org/wiki/Astronomical_year_numbering),其中包括年份 0。因此,公元前 1 年变为第 0 年,公元前 2 年变为 -1 年,年份3 BC 变为年-2,依此类推。因此,**4713 BC** 年份变为**-4712** 年份。 (2认同)