Maison >base de données >tutoriel mysql >Comment créer une table de calendrier sur 100 ans en SQL pour des requêtes efficaces liées aux dates ?

Comment créer une table de calendrier sur 100 ans en SQL pour des requêtes efficaces liées aux dates ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-21 01:17:07434parcourir

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

Créer une table de calendrier couvrant 100 ans en SQL

Supposons que vous disposiez d'un ensemble de données contenant un grand nombre de dates et que vous deviez extraire des informations spécifiques, telles que le jour de l'année ou le nombre de semaines. La création d'un tableau de calendrier vous permet de récupérer facilement ces informations en connectant vos données au tableau de calendrier. Voici comment créer une table de calendrier couvrant une période de 100 ans en 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>

Ce script créera un calendrier contenant tous les jours entre le 1er janvier 1901 et le 31 décembre 2099. Vous pouvez ensuite utiliser ce tableau pour extraire des informations relatives à la date des données. Par exemple, la requête suivante renverra le nombre de jours entre deux dates :

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

Le résultat de cette requête sera 90 car il y a 90 jours entre le 1er janvier 2023 et le 31 mars 2023.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn