Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menjana Siri Tarikh Tepat Sepanjang Berbilang Tahun dalam PostgreSQL?

Bagaimanakah Saya Boleh Menjana Siri Tarikh Tepat Sepanjang Berbilang Tahun dalam PostgreSQL?

Barbara Streisand
Barbara Streisandasal
2025-01-21 17:01:09192semak imbas

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

Jana dengan tepat siri tarikh PostgreSQL yang merangkumi beberapa tahun

Fungsi generate_series berguna apabila menjana jujukan tarikh antara dua tarikh tertentu dalam PostgreSQL. Walau bagaimanapun, seperti yang ditunjukkan oleh pertanyaan di bawah, ia mungkin tidak memberikan hasil yang tepat apabila tarikh menjangkau tahun yang berbeza:

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

Untuk menyelesaikan masalah ini, penyelesaian yang lebih tepat boleh digunakan, yang melibatkan penukaran cap masa:

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

Dalam pertanyaan ini, fungsi date_trunc digunakan untuk mengekstrak bahagian tarikh daripada cap waktu yang dijana, memastikan hasil yang tepat walaupun tarikh menjangkau tahun yang berbeza. Fungsi generate_series mencipta jujukan cap masa dengan jarak satu hari, dan kemudian fungsi date_trunc menukar cap masa ini kembali kepada tarikh, sekali gus menyediakan jujukan tarikh yang boleh dipercayai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Siri Tarikh Tepat Sepanjang Berbilang Tahun dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn