Jana siri masa yang tepat dalam PostgreSQL merentasi beberapa tahun
Menjana siri masa adalah penting dalam banyak tugas analisis data. Dalam PostgreSQL, fungsi generate_series
boleh digunakan untuk mencipta julat tarikh antara dua tarikh tertentu. Walau bagaimanapun, pendekatan standard mungkin gagal apabila tarikh menjangkau beberapa tahun.
Pernyataan Masalah
Fungsi ini mungkin menghasilkan keputusan yang salah jika generate_series
tarikh mula dan tamat dalam pertanyaan adalah dari tahun yang berbeza. Contohnya, apabila cuba menjana jujukan antara '2007-02-01' dan '2008-04-01', pertanyaan standard mungkin menghasilkan set tarikh yang tidak sah.
Penyelesaian
Untuk menyelesaikan masalah ini, kaedah yang lebih baik diperlukan. Daripada menukar tarikh kepada integer (seperti dalam pertanyaan awal), kita boleh menggunakan cap masa secara langsung. Ini membolehkan kami mengambil kira peralihan antara tahun dengan tepat.
Pertanyaan yang diubah suai berikut menjana siri masa antara mana-mana dua tarikh tertentu, tidak kira sama ada tarikh tersebut tergolong dalam tahun yang sama:
<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>
Dengan menukar tarikh kepada cap masa, kami memastikan pengiraan perbezaan masa dan penciptaan siri masa yang berikutnya mengambil kira perubahan dalam tahun. Ini akan menjana set tarikh yang betul untuk julat yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Siri Masa Tepat dalam PostgreSQL Sepanjang Beberapa Tahun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!