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でこの問題を解決する方法を教えてください
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
これにはDateDiff
を使用できます。クエリのwhere句は次のようになります。
where DATEDIFF(day,pdate,GETDATE()) < 31
なぜこれらすべての複雑な答えがここにあるのか分かりませんが、これは私がすることです
_where pdate >= CURRENT_TIMESTAMP -30
_
またはWHERE CAST(PDATE AS DATE) >= GETDATE() -30
これを使用して、列に基づいて過去30日間のデータを取得できます。
WHERE DATEDIFF(dateColumn、CURRENT_TIMESTAMP)BETWEEN 0 AND 30
これはうまくいくはずです
SELECT * FROM product
WHERE pdate BETWEEN datetime('now', '-30 days') AND datetime('now', 'localtime')
以下のクエリは、過去30日間のレコードに適しています
ここでは、レビューテーブルとreview_date
はレビューテーブルの列です
SELECT * FROM reviews WHERE DATE(review_date) >= DATE(NOW()) - INTERVAL 30 DAY