


Comment récupérer efficacement toutes les dates entre deux dates dans SQL Server ?
Astuces pour obtenir toutes les dates entre deux dates dans SQL Server
Dans SQL Server, obtenir toutes les dates dans une plage de dates spécifiée est utile pour des tâches telles que l'analyse des données, le traitement des dates et la sauvegarde des enregistrements. Cet article présentera plusieurs méthodes pour obtenir efficacement une séquence de dates consécutives entre deux dates données.
Utiliser des expressions de table communes récursives (CTE)
Une solution consiste à utiliser le CTE récursif. Un exemple est le suivant :
;with GetDates As ( select DATEADD(day,1,@maxDate) as TheDate UNION ALL select DATEADD(day,1, TheDate) from GetDates where TheDate < @minDate ) select TheDate from GetDates
Cependant, bien que ce CTE fonctionne pour sélectionner des dates, cela devient difficile en raison d'erreurs de compilation lors de la tentative de stockage des résultats dans un curseur.
Méthodes alternatives
Pour augmenter l'efficacité et simplifier les opérations, envisagez les alternatives suivantes :
1. Utiliser le tableau des dates
Si vous créez une table de dates à l'avance, la requête devient très simple :
DECLARE @MinDate DATE = '20140101', @MaxDate DATE = '20140106'; SELECT Date FROM dbo.Calendar WHERE Date >= @MinDate AND Date <= @MaxDate;
2. Générer une séquence de dates sans table de dates
Si vous n'avez pas de table de dates, vous pouvez générer dynamiquement une séquence de dates en utilisant la technique suivante :
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;
3. Évitez d'utiliser des curseurs pour l'itération de date
Il est généralement recommandé d'éviter d'utiliser des curseurs pour l'itération de date. Les approches basées sur la collecte sont généralement plus efficaces et évolutives. Par exemple, si vous souhaitez récupérer la quantité pour une date précise, vous pouvez utiliser la requête suivante :
SELECT TOP 1 date, it_cd, qty FROM T WHERE it_cd = 'i-1' AND Date = '20140101';
En évitant l'utilisation de curseurs et en tirant parti de ces techniques alternatives, vous pouvez récupérer efficacement toutes les dates comprises dans une plage spécifiée dans SQL Server.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?
