Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Jadual Kalendar 100 Tahun dalam SQL untuk Pertanyaan Berkaitan Tarikh yang Cekap?

Bagaimana untuk Mencipta Jadual Kalendar 100 Tahun dalam SQL untuk Pertanyaan Berkaitan Tarikh yang Cekap?

Linda Hamilton
Linda Hamiltonasal
2025-01-21 01:17:07383semak imbas

How to Create a 100-Year Calendar Table in SQL for Efficient Date-Related Queries?

Buat jadual kalendar meliputi 100 tahun dalam SQL

Andaikan anda mempunyai set data yang mengandungi sejumlah besar tarikh dan perlu mengekstrak maklumat tertentu, seperti hari dalam setahun atau bilangan minggu. Mencipta jadual kalendar membolehkan anda mendapatkan maklumat ini dengan mudah dengan menyambungkan data anda dengan jadual kalendar. Begini cara membuat jadual kalendar yang meliputi tempoh 100 tahun dalam SQL:

<code class="language-sql">-- 开始日期:1901年1月1日
-- 结束日期:2099年12月31日
DECLARE @StartDate DATETIME = '19010101';
DECLARE @EndDate DATETIME = '20991231';

-- 创建日历表
CREATE TABLE Calendar (
    CalendarDate DATETIME NOT NULL
);

-- 将日期插入日历表
WHILE @StartDate <= @EndDate
BEGIN
    INSERT INTO Calendar (CalendarDate) VALUES (@StartDate);
    SET @StartDate = DATEADD(day, 1, @StartDate);
END;</code>

Skrip ini akan mencipta kalendar yang mengandungi setiap hari antara 1 Januari 1901 dan 31 Disember 2099. Anda kemudian boleh menggunakan jadual ini untuk mengekstrak maklumat berkaitan tarikh daripada data. Contohnya, pertanyaan berikut akan mengembalikan bilangan hari antara dua tarikh:

<code class="language-sql">SELECT DATEDIFF(day, StartDate, EndDate)
FROM Calendar
WHERE StartDate >= '20230101' AND EndDate <= '20230331';</code>

Hasil pertanyaan ini ialah 90 kerana terdapat 90 hari antara 1 Januari 2023 dan 31 Mac 2023.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual Kalendar 100 Tahun dalam SQL untuk Pertanyaan Berkaitan Tarikh yang Cekap?. 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