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

use*_*912 22 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
Run Code Online (Sandbox Code Playgroud)

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

pdate
-------
2014-11-20
2014-12-12
2014-12-13
2014-11-16
Run Code Online (Sandbox Code Playgroud)

我试过这个查询

SELECT * 
FROM product 
WHERE pdate >= DATEADD(day, -30, getdate()).
Run Code Online (Sandbox Code Playgroud)

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

Pரத*_*ீப் 34

添加一个条件 where clause

SELECT * FROM  product 
WHERE pdate >= DATEADD(day,-30,GETDATE()) 
and   pdate <= getdate()
Run Code Online (Sandbox Code Playgroud)

或者使用 DateDiff

SELECT * FROM  product 
WHERE DATEDIFF(day,pdate,GETDATE()) between 0 and 30 
Run Code Online (Sandbox Code Playgroud)

  • @user3457912 - 不,它应该是从 0 到 30。今天的 datediff 将是 0 (3认同)

dan*_*ish 9

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

where DATEDIFF(day,pdate,GETDATE()) < 31
Run Code Online (Sandbox Code Playgroud)


jos*_*osh 7

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

where pdate >= CURRENT_TIMESTAMP -30
Run Code Online (Sandbox Code Playgroud)

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


Pra*_*odA 6

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

在这里,我使用了评论表,并且review_date是评论表中的一列

SELECT * FROM reviews WHERE DATE(review_date) >= DATE(NOW()) - INTERVAL 30 DAY
Run Code Online (Sandbox Code Playgroud)