Maison > base de données > tutoriel mysql > Comment générer efficacement une séquence de dates dans une plage donnée ?

Comment générer efficacement une séquence de dates dans une plage donnée ?

Mary-Kate Olsen
Libérer: 2025-01-12 10:03:43
original
781 Les gens l'ont consulté

How to Efficiently Generate a Sequence of Dates within a Given Range?

Générer une séquence de dates dans la plage spécifiée

Question :

Comment obtenir efficacement toutes les dates dans une plage spécifiée et les stocker dans un curseur ?

Solution :

Utiliser le tableau des dates

Les tables de dates offrent un moyen simple et direct de récupérer des dates. Si disponible, utilisez une requête telle que :

DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  Date
FROM    dbo.Calendar
WHERE   Date >= @MinDate
AND     Date < @MaxDate;
Copier après la connexion

Générer dynamiquement une séquence

Si vous n'avez pas de table de dates, vous pouvez utiliser la requête suivante pour générer une séquence de dates :

DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b;
Copier après la connexion

Évitez d'utiliser des curseurs

Pour améliorer les performances, envisagez d'utiliser une alternative basée sur une collection à la place des curseurs. Par exemple, pour récupérer les quantités pour un article et une date spécifiques :

DECLARE @ToDate DATE = '20140428';

SELECT  TOP 1 date, it_cd, qty 
FROM    T
WHERE   it_cd = 'i-1'
AND     Date <= @ToDate
ORDER BY Date DESC;
Copier après la connexion

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 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