web-dev-qa-db-ja.com

SQL Serverで今日の日付から過去30日間のレコードを取得する

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でこの問題を解決する方法を教えてください

20
user3457912

where clauseに条件をもう1つ追加します

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 
32

これにはDateDiffを使用できます。クエリのwhere句は次のようになります。

where DATEDIFF(day,pdate,GETDATE()) < 31
7
danish

なぜこれらすべての複雑な答えがここにあるのか分かりませんが、これは私がすることです

_where pdate >= CURRENT_TIMESTAMP -30
_

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

4
josh

これを使用して、列に基づいて過去30日間のデータを取得できます。

WHERE DATEDIFF(dateColumn、CURRENT_TIMESTAMP)BETWEEN 0 AND 30

これはうまくいくはずです

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

以下のクエリは、過去30日間のレコードに適しています

ここでは、レビューテーブルとreview_dateはレビューテーブルの列です

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