Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa `generate_series()`?

Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa `generate_series()`?

DDD
DDDasal
2025-01-14 09:15:53839semak imbas

How to Generate Date Ranges in MySQL Without `generate_series()`?

Penjanaan Julat Tarikh MySQL: Pendekatan Praktikal

MySQL tidak mempunyai persamaan langsung dengan fungsi generate_series() PostgreSQL. Walau bagaimanapun, kami boleh menjana julat tarikh dengan bijak menggunakan SQL dan pembolehubah. Kaedah ini amat berguna apabila anda perlu membuat julat tarikh tanpa jadual kalendar yang sedia ada.

Mari kita gambarkan dengan contoh. Bayangkan jadual jualan:

date qty
2011-01-01 3
2011-01-01 4
2011-04-01 2
2011-06-01 5

Matlamat kami adalah untuk mengembangkan ini untuk menunjukkan jualan harian untuk sepanjang tahun 2011:

date qty
2011-01-01 7
2011-01-02 0
2011-01-03 0
2011-04-01 2
...and so on...

Begini cara kami mencapai matlamat ini:

<code class="language-sql">SELECT 
    DATE_FORMAT(ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d') AS date
FROM 
    any_table, 
    (SELECT @num := -1) AS num
LIMIT 
    365;</code>

Pertanyaan ini menggunakan any_table (mana-mana jadual sedia ada akan berfungsi) sebagai pemegang tempat untuk memastikan pertanyaan berjalan. Pembolehubah @num, dimulakan kepada -1, meningkat dengan setiap baris, menjana tarikh berturut-turut bermula dari '2011-01-01'. LIMIT 365 mengehadkan keluaran kepada tahun bukan lompat; gunakan LIMIT 366 untuk tahun lompat. Fungsi DATE_FORMAT memastikan pemformatan tarikh yang konsisten.

Teknik ini menyediakan penyelesaian yang fleksibel dan cekap untuk menjana julat tarikh dalam MySQL, memudahkan pertanyaan dan analisis berasaskan tarikh.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa `generate_series()`?. 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