Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menjana Urutan Tarikh Dalam Julat Tertentu dalam SQL dengan Cekap?

Bagaimanakah Saya Boleh Menjana Urutan Tarikh Dalam Julat Tertentu dalam SQL dengan Cekap?

DDD
Lepaskan: 2025-01-23 17:17:14
asal
990 orang telah melayarinya

How Can I Efficiently Generate a Sequence of Dates Within a Specific Range in SQL?

Kaedah yang cekap untuk menjana julat tarikh SQL

Dalam pengaturcaraan pangkalan data, menjana jujukan tarikh dalam julat tarikh tertentu adalah tugas biasa. Contohnya, tanya tarikh antara 20 Januari 2010 dan 24 Januari 2010:

<code class="language-sql">SELECT ... AS days WHERE `date` BETWEEN '2010-01-20' AND '2010-01-24'</code>
Salin selepas log masuk

Hasil yang dijangkakan ialah:

<code>days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24</code>
Salin selepas log masuk

Penyelesaian subkueri yang cekap

Penyelesaian yang cekap ialah menggunakan subkueri untuk menjana urutan tarikh:

<code class="language-sql">SELECT a.Date
FROM (
    SELECT curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY AS Date
    FROM (
        SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) AS a
    CROSS JOIN (
        SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) AS b
    CROSS JOIN (
        SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) AS c
    CROSS JOIN (
        SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
    ) AS d
) a
WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24'</code>
Salin selepas log masuk

Pertimbangan Prestasi

Penyelesaian ini sangat berprestasi, dengan masa pelaksanaan pertanyaan hanya 0.0009 saat. Malah menjana 100,000 tarikh (kira-kira 274 tahun), masa pelaksanaan pertanyaan hanya 0.0458 saat.

Kemudahalihan

Teknologi ini sangat mudah alih dan boleh disesuaikan dengan kebanyakan sistem pangkalan data dengan hanya pelarasan kecil.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Urutan Tarikh Dalam Julat Tertentu dalam SQL dengan Cekap?. 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