Générer une série chronologique sur des années non consécutives dans PostgreSQL
Générer une série chronologique complète entre deux dates dans PostgreSQL nécessite une attention particulière, en particulier lorsqu'il s'agit de dates s'étalant sur plusieurs années. Les méthodes courantes utilisant generate_series
avec extract(doy)
peuvent produire des résultats inexacts dans de tels scénarios.
Une approche plus robuste
Une solution supérieure exploite la fonction generate_series
de PostgreSQL en conjonction avec date_trunc
et interval
. Cette technique génère de manière fiable des séries chronologiques sur n'importe quelle plage de dates, quelle que soit l'année.
La requête suivante illustre cette méthode améliorée :
<code class="language-sql">SELECT date_trunc('day', dd)::date FROM generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval) dd;</code>
Voici une répartition :
generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval)
: Cela génère une séquence d'horodatages, incrémentés d'un jour, entre les dates de début et de fin spécifiées.date_trunc('day', dd)
: Cette fonction tronque les horodatages au début de chaque journée, supprimant ainsi la composante temporelle.::date
: cela convertit les horodatages résultants en type de données date
pour une sortie plus propre.Cette approche raffinée offre une méthode précise et fiable pour créer des séries chronologiques sur des années non consécutives dans PostgreSQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!