Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa `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!