Documentation PostgreSQL 14.22 » Annexes » Support de date/heure » Dates Julien

Précédent | Niveau supérieur | Suivant
B.6. Histoire des unités | Sommaire | Annexe C. Mots-clés SQL

## B.7. Dates Julien

Le système de dates Julien est une méthode pour numéroter les jours. Il n'a pas de relation avec le calendrier Julien, malgré la similarité du nom. Le système de date Julien a été inventé par le précepteur français Joseph Justus Scaliger (1540–1609) et tient probablement son nom du père de Scaliger, le précepteur italien Julius Caesar Scaliger (1484–1558).

Dans le système de date Julien, chaque jour est un nombre séquentiel, commençant à partir de JD 0, appelé quelque fois la date Julien. JD 0 correspond au 1er janvier 4713 avant JC dans le calendrier Julien, ou au 24 novembre 4714 avant JC dans le calendrier grégorien. Le comptage de la date Julien est le plus souvent utilisé par les astronomes pour donner un nom à leurs observations, et du coup une date part de midi UTC jusqu'au prochain midi UTC, plutôt que de minuit à minuit : JD 0 désigne les 24 heures de midi UTC le 24 novembre 4714 avant JC au 25 novembre 4714 avant JC à minuit.

Bien que PostgreSQL accepte la saisie et l'affichage des dates en notation de date Julien (et les utilise aussi pour quelques calculs internes de date et heure), il n'utilise pas le compte des dates de midi à midi. PostgreSQL traite une date Julien comme allant de minuit heure locale à minuit heure locale, de la même façon que pour une date normale.

Néanmoins, cette définition fournit une méthode pour obtenir la définition astronomique quand vous en avez besoin : faites le calcul dans le fuseau horaire `UTC+12`. Par exemple,

    => 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)