2017-05-30 11 views
-5

Wie wähle ich die letzten 5 Tage für ein bestimmtes Datum aus?Wie Datum der letzten 5 Tage auswählen?

bestimmten Datum: 2015-11-14

Auswahlabfrage sollte wie unten Ausgang zurückkehren -

2015-11-14 
2015-11-13 
2015-11-12 
2015-11-11 
2015-11-10 
+6

Letzte 5 Tage von dem, was? Ernsthaft .... Sie müssen ein gewisses Maß an Informationen bereitstellen, wenn Sie Hilfe erwarten. –

+1

Letzte 5 Tage von was? Sie müssen genauer sein. Beziehen Sie sich darauf, die 5 Tage vor einem bestimmten Datum zu bekommen? – Eli

+1

@SeanLange jinx. – Eli

Antwort

0

Sie können einen rekursiven CTE verwenden:

with dates as (
     select cast(getdate() as date) as dte 
     union all 
     select dateadd(day, -1, dte) 
     from dates 
     where datediff(day, dte, getdate()) <= 4 
    ) 
select * 
from dates 
order by dte desc; 

Offensichtlich können Sie einen beliebigen anderen Zeitpunkt verweisen Sie wollen statt getdate(). Ihr Beispiel weist darauf hin, dass das aktuelle Datum 2015-11-14 ist, was vor einer Weile war.

0

können Sie tally Tabelle verwenden, wie unten

Declare @dt date = getdate()  
Select top (5) Dt = DateAdd(day, -Row_number() over (order by (select null)), @dt) from master..spt_values 
-1
DECLARE @fromData date = getdate() 
DECLARE @daysBack int = 5 

;WITH dates AS (

    SELECT 1 as LP, @fromData as Dates 
    UNION ALL 
    SELECT LP + 1, DATEADD(DAY,-1,@fromData) 
    FROM dates 
    WHERE LP < @daysBack 
) 

SELECT * 
FROM dates 
0
DECLARE @startdate date = getdate(); 
DECLARE @NbDays int = 5; 

WITH ListDate AS (
SELECT 1 as LP, @startdate as Dt 
UNION ALL 
SELECT LP + 1, DATEADD(DAY,-1,Dt) 
FROM ListDate 
WHERE LP < @NbDays 
) 

SELECT * FROM ListDate; 
Verwandte Themen