Je me demandais s'il existe un moyen de récupérer une liste de toutes les dates dans SQL Server. Je sais que l'utilisation de la fonction getdate() récupérera la date et l'heure actuelles. Y a-t-il une fonction qui retournera une liste de toutes les dates?Récupération de dates SQL Server
Répondre
Non à partir d'une fonction intégrée, non, mais vous pouvez créer votre propre function
qui fait cela.
Vous pouvez générer une liste de dates par ce qui suit:
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With Date (Date) As
(
Select @FromDate Union All
Select DateAdd(Day, 1, Date)
From Date
Where Date < @ToDate
)
Select Date
From Date
Option (MaxRecursion 0)
Dans cette logique, vous pouvez créer votre propre function
à faire de même:
Create Function udf_GenerateDateRange(@From Date, @To Date)
Returns @Date Table
(
Date Date
)
As Begin
;With Date (Date) As
(
Select @From Union All
Select DateAdd(Day, 1, Date)
From Date
Where Date < @To
)
Insert @Date
Select Date
From Date
Option (MaxRecursion 0)
Return
End
Utilisation du function
vous pouvez sélectionner tout dans la plage de dates via:
Select * From udf_GenerateDateRange('2014-01-01', '2014-05-10')
I d Vous ne savez pas ce que vous entendez par "toutes les dates", mais vous devriez être en mesure de transmettre une date de début et une date de fin, et cela retournera tout entre les deux.
Je ne peux pas voter parce que je n'ai aucune idée de ce que le PO demande –
Je lis sa question comme "Comment puis-je générer une liste de dates?" – Siyual
Merci beaucoup pour votre réponse. C'est exactement ce que je cherchais - même si j'avais du mal à décoder ce que je voulais haha – user3109653
Cette fonction vous donnera une liste de dates du début à la fin avec une fréquence spécifiée.
IF OBJECT_ID('ListDates') IS NOT NULL DROP FUNCTION ListDates
GO
CREATE FUNCTION [dbo].[ListDates]
/*
returns a list of intervals with the given frequency that start after @StartDate and
before @EndDate.
*/
(
@Frequency int,
@StartDate DateTime,
@EndDate DateTime)
/*
@Frequency:
0 - day,
1 - week,
2 - month
3 - 3 months
4 - 6 months
5 - year
*/
returns @List TABLE (StartRange Date, EndRange Date)
BEGIN
with dates as (
SELECT cast(@StartDate as Date) [date]
UNION ALL
SELECT
CASE @Frequency
WHEN 0 THEN DATEADD(day,1,t.date)
WHEN 1 THEN DATEADD(week,1,t.date)
WHEN 2 THEN DATEADD(month,1,t.date)
WHEN 3 THEN DATEADD(month,3,t.date)
WHEN 4 THEN DATEADD(month,6,t.date)
WHEN 5 THEN DATEADD(year,1,t.date)
END
FROM dates t
WHERE t.[date] < @EndDate
)
insert into @List (StartRange, EndRange)
select
[Date],
CASE @Frequency
WHEN 0 THEN DATEADD(day,1,[Date])
WHEN 1 THEN DATEADD(week,1,[Date])
WHEN 2 THEN DATEADD(month,1,[Date])
WHEN 3 THEN DATEADD(month,3,[Date])
WHEN 4 THEN DATEADD(month,6,[Date])
WHEN 5 THEN DATEADD(year,1,[Date])
END
from dates
WHERE [Date] < @EndDate
OPTION (MAXRECURSION 10000)
RETURN
END
GO
- 1. Microsoft SQL Server 2008 - Dates
- 2. SQL Server Strings et dates
- 3. Dates dynamiques dans l'instruction SQL SQL Server
- 4. Récupération de base de données SQL Server
- 5. SQL Server LOG récupération de données
- 6. SQL Server: Trouver la plage de dates
- 7. L'agrégation de dates dans SQL Server
- 8. hiérarchie Récupération dans SQL Server 2005
- 9. Comparez deux dates et filtrer Sql Server
- 10. Comparer des dates dans SQL Server
- 11. SQL Server 2005 comparer les dates
- 12. SQL Server - requête récursive avec des dates
- 13. Dates consécutives/cumulées dans SQL Server
- 14. SQL Server: créer des dates futures
- 15. Requête SQL dans SQL SERVER 2005 - Comparaison des dates
- 16. Modification du mode de récupération de SQL Server 2008
- 17. Gammes de dates de récupération de contenu
- 18. Importation de dates dans R à partir de SQL Server
- 19. Comparaison de dates SQL Server 2005 - problèmes de classement
- 20. SQL Server 2008, récupération de la mémoire RAM
- 21. Récupération de données à partir d'une erreur SQL Server
- 22. instruction delete Annuler SQL Server en mode de récupération simple
- 23. SQL Server: la récupération longueur du type de données
- 24. Récupération d'utilisateurs Unix à partir de SQL Server
- 25. Application Web récupération des données de SQL Server 2005
- 26. Confusions de mode de récupération SQL Server et de récupération en bloc
- 27. bonne façon de comparer les dates courtes (SQL Server 2005)
- 28. ASP.NET - VB.NET - SQL Server Express 2012 - Dates de stockage
- 29. Colonne de date SQL Server triant automatiquement les dates
- 30. sql server 2008 - manipuler les dates - fenêtre de la semaine
quoi ??????????? –
étant donné qu'il y a environ 14 milliards de "dates", et et un nombre infini de fois pour chacune de ces dates, vous allez attendre un certain temps pour les résultats de votre requête. Et si vous voulez inclure des dates FUTURES, cela prendra encore quelques minutes. –
Toutes les dates? Mais je pensais que le temps était infiniment grand ... – DMason