7

Mam małe pytanie o SQL Server: jak dostać ostatnie 30 dni informacji z tej tabeli danePobierz ostatnie 30 dziennie rekordy z dniem dzisiejszym w SQL Server

próbki:

Product:

Pdate 
---------- 
2014-11-20 
2014-12-12 
2014-11-10 
2014-12-13 
2014-10-12 
2014-11-15 
2014-11-14 
2014-11-16 
2015-01-18 

na podstawie tych danych tabeli chcę wyjście jak poniżej

pdate 
------- 
2014-11-20 
2014-12-12 
2014-12-13 
2014-11-16 

I tri ed this query

SELECT * 
FROM product 
WHERE pdate >= DATEADD(day, -30, getdate()). 

ale teraz daje dokładny wynik. Proszę mi powiedzieć, jak rozwiązać ten problem w SQL Server

+0

czym polega problem z zapytaniem? Jak działa "2015-01-18". –

+0

Nie trzeba przedstawiać tego 2015-01-18 zapisz, że nie jest to ostatnie 30 dni do dzisiaj. – user3457912

Odpowiedz

3

Możesz użyć do tego DateDiff. Klauzula WHERE w zapytaniu wyglądałby następująco:

where DATEDIFF(day,pdate,getdate()) < 31 
19

Dodaj jeszcze jeden warunek w where clause

SELECT * FROM product 
WHERE pdate >= DATEADD(day,-30, getdate()) 
and pdate <= getdate() 

Albo użyć DateDiff

SELECT * FROM product 
WHERE DATEDIFF(day,pdate,getdate()) between 0 and 30 
+0

thanks.give logic working fine.we może dawać od 0 do 29 tym razem jego od dzisiaj do 30 dni. – user3457912

+0

@ user3457912 - Nie powinno być od 0 do 30., ponieważ dzisiaj datediff będzie miało 0 –

0

To powinno działać dobrze !!!

SELECT * FROM product WHERE pdate BETWEEN datetime('now', '-30 days') AND datetime('now', 'localtime') 
0

Nie wiem dlaczego te wszystkie skomplikowane odpowiedzi są tutaj, ale to jest to, co chciałbym zrobić

where pdate >= CURRENT_TIMESTAMP -30 

LUB WHERE CAST(PDATE AS DATE) >= GETDATE() -30