2013-05-12 11 views
8

i mam kody takie jak ten:SQL gdzie Termin od dzisiaj minus oraz PLUS dni

select CUS_Id, CUS_Name, CUS_JoinDate 

    from CUSTOMER 

    where CUS_joinDate between '04-12-2013' and '06-12-2013' 

Jak mogę to zrobić „gdzie” CUS_JoinDate będą deklarować od dzisiaj Data (minus 1 miesiąc i dzisiaj + 1 miesiąc)?

Za każdym razem, gdy uruchomię raport, będzie to zależało od aktualnej daty i automatycznie minie i plus 30 dni.

Dzięki,

Odpowiedz

15

spróbować

WHERE CUS_joinDate BETWEEN DATEADD(mm,-1,GETDATE()) AND DATEADD(mm,1,GETDATE()) 
+0

to działa ..^_^.. Dzięki .. – Captain16

+0

jesteś mile widziany ':)' –

+0

„Give moje zapisy z przyszłości! " –

0

Spróbuj tego:

select CUS_Id, CUS_Name, CUS_JoinDate 

    from CUSTOMER 

    where CUS_joinDate BETWEEN DATEADD(DAY,-1,GETDATE()) AND DATEADD(DAY,1,GETDATE()) 

Jednakże, jeśli trzeba dodać miesiąc/rok do tej pory, trzeba użyć funkcji DateAdd().

Może być używany jako:

SELECT  GETDATE(), 'Today' 
UNION ALL 
SELECT  DATEADD(DAY, 10, GETDATE()), '10 Days Later' 
UNION ALL 
SELECT  DATEADD(DAY, –10, GETDATE()), '10 Days Earlier' 
UNION ALL 
SELECT  DATEADD(MONTH, 1, GETDATE()), 'Next Month' 
UNION ALL 
SELECT  DATEADD(MONTH, –1, GETDATE()), 'Previous Month' 
UNION ALL 
SELECT  DATEADD(YEAR, 1, GETDATE()), 'Next Year' 
UNION ALL 
SELECT  DATEADD(YEAR, –1, GETDATE()), 'Previous Year' 

Result Set:

2011-05-20 21:11:42.390 Today 
2011-05-30 21:11:42.390 10 Days Later 
2011-05-10 21:11:42.390 10 Days Earlier 
2011-06-20 21:11:42.390 Next Month 
2011-04-20 21:11:42.390 Previous Month 
2012-05-20 21:11:42.390 Next Year 
2010-05-20 21:11:42.390 Previous Year