Maison > base de données > tutoriel mysql > Comment générer une série de dates entre deux dates données dans SQL Server ?

Comment générer une série de dates entre deux dates données dans SQL Server ?

Barbara Streisand
Libérer: 2025-01-15 09:07:43
original
185 Les gens l'ont consulté

How to Generate a Series of Dates Between Two Given Dates in SQL Server?

Générer une plage de dates dans SQL Server

Dans SQL Server, la tâche consistant à remplir une plage de dates entre deux dates données dans un tableau peut être simplifiée en utilisant plusieurs méthodes. Une méthode efficace consiste à utiliser une table numérique ou une table de comptage pour générer une série d’entiers.

Sur la base de la demande de remplissage du tableau avec des dates comprises entre le '2011-09-01' et le '2011-10-10', la solution suivante peut être implémentée :

<code class="language-sql">DECLARE @StartDate DATE = '20110901'
, @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)</code>
Copier après la connexion

Ce code génère une liste d'entiers allant de 1 à la différence entre la date de début et la date de fin. En soustrayant 1 à chaque nombre entier et en l'ajoutant à la date de début, il génère un tableau de dates commençant par « 2011-09-01 » et se terminant par « 2011-10-10 ».

Alternativement, une table de comptage base zéro peut être utilisée pour simplifier les calculs :

<code class="language-sql">CREATE TABLE [dbo].[nbrs](
    [nbr] [INT] NOT NULL
) ON [PRIMARY]

INSERT INTO dbo.nbrs (nbr)
SELECT nbr-1
FROM ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs

DECLARE @StartDate DATE = '20110901'
      , @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr, @StartDate)
FROM    nbrs
WHERE   nbr <= DATEDIFF(DAY, @StartDate, @EndDate)</code>
Copier après la connexion

En stockant de manière permanente une table de nombres dans la base de données, vous pouvez la réutiliser pour de futures requêtes, éliminant ainsi le besoin de sous-requêtes et de récursion, garantissant ainsi performances et efficacité.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal