Maison >base de données >tutoriel mysql >Comment remplir une table temporaire avec des dates entre deux paramètres ?
Remplir une table temporaire avec des dates entre les paramètres
Pour remplir une table temporaire avec des dates comprises entre et incluant deux paramètres de date, y compris le premier jour de le mois, envisagez l'approche suivante :
Étape 1 : Créer une expression de table commune récursive (CTE)
;WITH cte AS ( SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate ELSE DATEADD(Month,DATEDIFF(Month,0,@StartDate)+1,0) END AS myDate UNION ALL SELECT DATEADD(Month,1,myDate) FROM cte WHERE DATEADD(Month,1,myDate) <= @EndDate )
Étape 2 : Sélectionnez les dates de CTE
SELECT myDate FROM cte OPTION (MAXRECURSION 0)
Exemple :
Pour @StartDate = '2011-01-01' et @EndDate = '2011-08-01', les dates suivantes seront renvoyées dans la table temporaire :
2011-01-01 2011-02-01 2011-03-01 2011-04-01 2011-05-01 2011-06-01 2011-07-01 2011-08-01
Remarque :
Cette approche gère les cas où @StartDate est pas le premier jour du mois en commençant la récursion avec le premier du mois suivant. Si vous souhaitez quand même commencer par @StartDate, supprimez le 1 de l'instruction SELECT interne dans la définition CTE.
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!