Redrock Postgres 搜索 英文
版本: 14 / 15 / 16

B.7. 儒略日 #

儒略日系统是一种对日期进行编号的方法。它与儒略历无关,尽管其名称与该历法非常相似,容易混淆。儒略日系统是由法国学者约瑟夫·朱斯图斯·斯卡利格(1540-1609 年)发明的,其名称可能源自斯卡利格的父亲,意大利学者朱利叶斯·凯撒·斯卡利格(1484-1558 年)。

在儒略日系统中,每一天都有一个顺序编号,从 JD 0 开始(有时称为儒略日)。JD 0 对应于儒略历中的公元前 4713 年 1 月 1 日,或格里高利历中的公元前 4714 年 11 月 24 日。儒略日计数最常被天文学家用于标记他们的夜间观测,因此一个日期从协调世界时中午到下一个协调世界时中午,而不是从午夜到午夜:JD 0 表示公元前 4714 年 11 月 24 日协调世界时中午到公元前 4714 年 11 月 25 日协调世界时中午的 24 小时。

尽管 PostgreSQL 支持使用儒略日历表示法输入和输出日期(并且还将儒略日历日期用于一些内部日期时间计算),但它并未遵守日期从中午到中午运行的规则。 PostgreSQL 将儒略日历日期视为从当地午夜运行到当地午夜,与普通日期相同。

然而,此定义提供了一种在需要时获取天文定义的方法:在时区 UTC+12 中执行算术运算。例如,

=> SELECT extract(julian from '2021-06-23 7:00:00-04'::timestamptz at time zone 'UTC+12');
           extract
------------------------------
 2459388.95833333333333333333
(1 row)
=> SELECT extract(julian from '2021-06-23 8:00:00-04'::timestamptz at time zone 'UTC+12');
               extract
--------------------------------------
 2459389.0000000000000000000000000000
(1 row)
=> SELECT extract(julian from date '2021-06-23');
 extract
---------
 2459389
(1 row)