我对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中解决这个问题
答案 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之间