从SQL Server获取今天的最后30天记录

时间:2014-12-15 08:18:12

标签: sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我对SQL Server有一个小问题:如何从此表中获取最近30天的信息

示例数据:

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

基于此表数据,我想要输出如下

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

我试过了这个查询

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

但它现在给出了确切的结果。请告诉我如何在SQL Server中解决这个问题

6 个答案:

答案 0 :(得分:31)

where clause

中再添加一个条件
SELECT * FROM  product 
WHERE pdate >= DATEADD(day,-30, getdate()) 
and   pdate <= getdate()

或使用DateDiff

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

答案 1 :(得分:6)

您可以使用DateDiff。查询中的where子句如下所示:

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

答案 2 :(得分:2)

我不知道为什么所有这些复杂的答案都在这里,但这就是我要做的事情

where pdate >= CURRENT_TIMESTAMP -30

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

答案 3 :(得分:0)

这应该工作正常

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

答案 4 :(得分:0)

以下查询适用于最近30天的记录

在这里,我使用了检阅表,review_date是检阅表中的一列

SELECT * FROM reviews WHERE DATE(review_date) >= DATE(NOW()) - INTERVAL 30 DAY

答案 5 :(得分:0)

您可以使用它基于列获取最近30天的数据。

WHERE DATEDIFF(dateColumn,CURRENT_TIMESTAMP)在0到30之间