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
Lepaskan: 2025-01-14 09:15:53
asal
898 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan