web-dev-qa-db-ja.com

過去30日間のデータを取得するSQLクエリ?

こんにちは、私はOracleが初めてです。たとえば、過去30日間または20日間の購入日から製品IDを取得するなど、簡単なステートメントを実行するにはどうすればよいですか?

SELECT productid FROM product
WHERE purchase_date ? 
33
miracle
SELECT productid FROM product WHERE purchase_date > sysdate-30
61
jgrabowski

最も簡単な方法は、指定することです

Purchase_date> sysdate-30の製品からSELECT productid;

上記のこのsysdateには時間コンポーネントがあるため、現在の時間に基づいて03-06-2011 8:54 AMより新しい発注書になることに注意してください。

比較するときに時間要素を削除したい場合..

SELECT productid FROM product where purchase_date > trunc(sysdate-30);

(コメントに基づいて)、特定の日付を指定する場合は、to_dateを使用し、デフォルトのセッションパラメータに依存しないことを確認してください。

Purchase_date> to_date('03/06/2011 '、' mm/dd/yyyy ')の製品からSELECT productid

(sysdate-30)-(sysdate)コメントの間で、注文については、将来order_datesの注文ができる場合を除き、sysdate条件だけで問題ないはずです。

12

「purchase_date>(sysdate-30)」を実行するときは、1つの側面に注意してください。「sysdate」は現在の日付、時間、分、秒です。したがって、「sysdate-30」は正確に「30日前」ではなく、「この正確な時間で30日前」です。

購入日が時間、分、秒で00.00.00の場合、次のように改善します。

where trunc(purchase_date)>trunc(sysdate-30)

(これは、時間、分、秒を考慮しません)。

7
_SELECT COUNT(job_id) FROM jobs WHERE posted_date < NOW()-30;
_

Now()は、現在の日付と時刻を返します。

1
sinethr

これを試してください:これを使用して、過去30日間のデータを選択できます

SELECT
    *
FROM
    product
WHERE
    purchase_date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
1
Faisal