Menjana Siri Masa Merentasi Tahun Bukan Berturut-turut dalam PostgreSQL
Menjana siri masa yang lengkap antara dua tarikh dalam PostgreSQL memerlukan pertimbangan yang teliti, terutamanya apabila berurusan dengan tarikh yang merangkumi beberapa tahun. Kaedah biasa menggunakan generate_series
dengan extract(doy)
boleh menghasilkan keputusan yang tidak tepat dalam senario sedemikian.
Pendekatan Lebih Teguh
Penyelesaian unggul memanfaatkan fungsi generate_series
PostgreSQL bersama-sama dengan date_trunc
dan interval
. Teknik ini boleh menjana siri masa merentas mana-mana julat tarikh, tanpa mengira tahun.
Pertanyaan berikut menunjukkan kaedah yang dipertingkatkan ini:
<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>
Berikut ialah pecahan:
generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval)
: Ini menjana jujukan cap masa, bertambah satu hari, antara tarikh mula dan tamat yang ditentukan.date_trunc('day', dd)
: Fungsi ini memotong cap masa ke permulaan setiap hari, mengalih keluar komponen masa.::date
: Ini menghantar cap masa yang terhasil ke date
jenis data untuk output yang lebih bersih.Pendekatan yang diperhalusi ini menawarkan kaedah yang tepat dan boleh dipercayai untuk mencipta siri masa merentas tahun bukan berturut-turut dalam PostgreSQL.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Siri Masa Antara Tahun Tidak Berturut-turut dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!