Maison >base de données >tutoriel mysql >Comment puis-je générer des séries de dates précises sur plusieurs années dans PostgreSQL ?

Comment puis-je générer des séries de dates précises sur plusieurs années dans PostgreSQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-21 17:01:09139parcourir

How Can I Generate Accurate Date Series Across Multiple Years in PostgreSQL?

Générer avec précision des séries de dates PostgreSQL s'étalant sur plusieurs années

La fonction generate_series est utile lors de la génération d'une séquence de dates entre deux dates données dans PostgreSQL. Cependant, comme le montre la requête ci-dessous, elle peut ne pas fournir de résultats précis lorsque les dates s'étendent sur différentes années :

<code class="language-sql">select date '2004-03-07' + j - i as AllDate 
from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i,
     generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j</code>

Pour résoudre ce problème, une solution plus précise peut être utilisée, qui implique la conversion des horodatages :

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

Dans cette requête, la fonction date_trunc est utilisée pour extraire la partie date de l'horodatage généré, garantissant des résultats précis même si les dates s'étendent sur des années différentes. La fonction generate_series crée une séquence d'horodatages espacés d'un jour, puis la fonction date_trunc reconvertit ces horodatages en dates, fournissant ainsi une séquence de dates fiable.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn