Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa Jadual Kalendar?

Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa Jadual Kalendar?

DDD
Lepaskan: 2025-01-14 11:05:42
asal
322 orang telah melayarinya

How to Generate a Date Range in MySQL Without a Calendar Table?

Bijak menjana julat tarikh MySQL tanpa jadual kalendar

Fungsi generate_series() PostgreSQL boleh menjana julat tarikh dengan mudah. Walau bagaimanapun, MySQL tidak mempunyai fungsi setara langsung. Artikel ini menyediakan penyelesaian untuk membantu anda melaksanakan fungsi serupa dalam MySQL.

Cabaran

Selalunya perlu melakukan pertanyaan yang melibatkan penggabungan data dengan julat tarikh yang lengkap. Walau bagaimanapun, tugas ini boleh membosankan jika pangkalan data anda tidak mempunyai jadual kalendar tertentu.

Penyelesaian MySQL

Buat julat tarikh dalam MySQL menggunakan jadual contoh yang disediakan:

<code class="language-sql">SELECT 
    DATE_FORMAT(
        ADDDATE('2011-1-1', @num := @num + 1), 
        '%Y-%m-%d'
    ) AS 日期
FROM 
    任意表,    
    (SELECT @num := -1) AS num
LIMIT 
    365;</code>
Salin selepas log masuk

Penerangan

Pertanyaan ini menjana julat tarikh dari '2011-01-01' hingga '2011-12-31' menggunakan langkah berikut:

  1. 任意表 digunakan sebagai rujukan untuk mencipta julat nombor garis maya dari -1 hingga 364 (-1 hingga 365 untuk tahun lompat).
  2. Fungsi
  3. ADDDATE() menambah bilangan hari yang sesuai pada tarikh mula.
  4. DATE_FORMAT() Fungsi memformat tarikh yang dijana ke dalam format 'YYYY-MM-DD' yang diperlukan.

Integrasi

Pertanyaan ini boleh digunakan sebagai subkueri dalam pertanyaan utama untuk digabungkan dengan jadual asal anda. Contohnya:

<code class="language-sql">SELECT 
    t.日期, 
    COALESCE(d.qty, 0) AS qty
FROM 
    (
        SELECT 
            DATE_FORMAT(
                ADDDATE('2011-1-1', @num := @num + 1), 
                '%Y-%m-%d'
            ) AS 日期
        FROM 
            任意表,    
            (SELECT @num := -1) AS num
        LIMIT 
            365
    ) AS t
LEFT JOIN 
    原始表 AS d 
ON 
    t.日期 = d.日期;</code>
Salin selepas log masuk

Pertanyaan ini akan mengembalikan hasil yang diingini, di mana baris dengan tarikh yang tiada akan diisi dengan nilai qty '0'.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh dalam MySQL Tanpa Jadual Kalendar?. 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