Cara Menggunakan SQL untuk Menjana Julat Tarikh
Apabila bekerja dengan SQL, selalunya perlu menjalankan pertanyaan merentas berbilang tarikh. Ini boleh mencabar jika anda tidak mempunyai senarai tarikh yang dipratentukan untuk digunakan. Nasib baik, terdapat beberapa teknik yang boleh anda gunakan untuk menjana julat tarikh dalam SQL.
Satu pendekatan biasa ialah menggunakan klausa CONNECT BY. Klausa ini membolehkan anda membuat pertanyaan hierarki yang menjana satu siri baris berdasarkan perhubungan yang ditentukan. Contohnya, pertanyaan berikut akan menjana senarai 365 hari yang lalu:
SELECT TRUNC(SYSDATE - ROWNUM) dt FROM DUAL CONNECT BY ROWNUM < 366
Pertanyaan ini bermula dengan tarikh semasa (SYSDATE) dan kemudian menolak satu hari untuk setiap baris dalam hierarki. Lajur pseudo ROWNUM menjejaki nombor baris semasa dan klausa CONNECT BY memastikan pertanyaan akan berhenti selepas menjana 365 baris.
Pilihan lain untuk menjana julat tarikh ialah menggunakan operator CROSS JOIN . Operator ini membenarkan anda untuk menggabungkan dua jadual ke dalam set hasil tunggal, walaupun ia tidak mempunyai sebarang lajur yang sepadan. Sebagai contoh, pertanyaan berikut akan menjana senarai semua kemungkinan gabungan hari dan jam:
SELECT day, hour FROM ( SELECT LEVEL - 1 day FROM DUAL CONNECT BY LEVEL <= 365 ) CROSS JOIN ( SELECT LEVEL - 1 hour FROM DUAL CONNECT BY LEVEL <= 24 )
Pertanyaan ini bermula dengan membuat jadual hari (subkueri pertama) dan jadual jam (yang kedua subquery). Operator CROSS JOIN kemudiannya menggabungkan kedua-dua jadual ini ke dalam set hasil tunggal, menjana semua kemungkinan gabungan hari dan jam.
Akhir sekali, anda juga boleh menggunakan prosedur tersimpan untuk menjana julat tarikh. Prosedur tersimpan ialah satu set pernyataan SQL yang disimpan dalam pangkalan data dan boleh dilaksanakan beberapa kali. Prosedur tersimpan berikut akan menjana senarai 365 hari terakhir:
CREATE PROCEDURE generate_dates AS BEGIN FOR i IN 1 .. 365 LOOP INSERT INTO dates (dt) VALUES (TRUNC(SYSDATE - i)); END LOOP; END;
Prosedur tersimpan ini boleh dilaksanakan dengan memanggil pernyataan berikut:
EXECUTE generate_dates;
Setelah prosedur tersimpan telah dilaksanakan, anda kemudian boleh menggunakan jadual tarikh untuk menjalankan pertanyaan anda.
Ini hanyalah beberapa teknik yang boleh anda gunakan untuk menjana julat tarikh dalam SQL. Pendekatan terbaik untuk anda bergantung pada keperluan khusus aplikasi anda.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh dalam SQL Menggunakan CONNECT BY, CROSS JOIN, atau Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!