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:
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
Untuk menyelesaikan masalah ini, penyelesaian yang lebih tepat boleh digunakan, yang melibatkan penukaran cap masa:
SELECT date_trunc('day', dd):: date FROM generate_series ( '2007-02-01'::timestamp , '2008-04-01'::timestamp , '1 day'::interval) dd ;
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!