El sistema de Fecha Juliana (Julian Date) es un método para numerar los días. No está relacionado con el calendario juliano, aunque se llame de forma similar y confusa a dicho calendario. El sistema de Fecha Juliana fue inventado por el erudito francés Joseph Justus Scaliger (1540–1609) y probablemente toma su nombre del padre de Scaliger, el erudito italiano Julius Caesar Scaliger (1484–1558).
En el sistema de Fecha Juliana, cada día tiene un número secuencial, comenzando desde JD 0 (que a veces se denomina la Fecha Juliana). JD 0 corresponde al 1 de enero de 4713 a.C. en el calendario juliano, o al 24 de noviembre de 4714 a.C. en el calendario gregoriano. El conteo de la Fecha Juliana es utilizado con mayor frecuencia por los astrónomos para etiquetar sus observaciones nocturnas y, por lo tanto, un día transcurre desde el mediodía UTC hasta el siguiente mediodía UTC, en lugar de medianoche a medianoche: JD 0 designa las 24 horas desde el mediodía UTC del 24 de noviembre de 4714 a.C. hasta el mediodía UTC del 25 de noviembre de 4714 a.C.
Aunque PostgreSQL admite la notación de Fecha Juliana para la entrada y salida de fechas (y también utiliza fechas julianas para algunos cálculos internos de fecha y hora), no observa la sutileza de hacer que las fechas transcurran de mediodía a mediodía. PostgreSQL trata una Fecha Juliana como si transcurriera de medianoche local a medianoche local, al igual que una fecha normal.
Sin embargo, esta definición proporciona una forma de obtener la definición astronómica cuando la necesites:
realiza la aritmética en la zona horaria UTC+12. Por ejemplo:
=> 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)