web-dev-qa-db-fra.com

Obtention des enregistrements des 30 derniers jours à compter de la date d'aujourd'hui dans SQL Server

J'ai une petite question à propos de SQL Server: comment obtenir les informations des 30 derniers jours à partir de ce tableau 

Échantillon de données:

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

Sur la base de cette table de données, je veux une sortie comme ci-dessous

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

J'ai essayé cette requête 

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

mais cela donne maintenant exactement le résultat. S'il vous plaît dites-moi comment résoudre ce problème dans SQL Server

11
user3457912

Ajouter une condition supplémentaire dans where clause

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

Ou utilisez DateDiff

SELECT * FROM  product 
WHERE DATEDIFF(day,pdate,getdate()) between 0 and 30 
25
Pரதீப்

Vous pouvez utiliser DateDiff pour cela. La clause where dans votre requête ressemblerait à ceci:

where DATEDIFF(day,pdate,getdate()) < 31
4
danish

Je ne sais pas pourquoi toutes ces réponses compliquées sont ici mais c'est ce que je ferais 

where pdate >= CURRENT_TIMESTAMP -30

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

2
josh

Cela devrait bien fonctionner !!! 

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