3

次のようなテーブルがあります。

caravan_id, description, date_purchased, special_instructions, health&safety_check, notes

health&safety_check日付フィールドです。

health&safety_check12 か月以上経過したすべての行を返す、このテーブルのデータに対して SQL クエリを実行するにはどうすればよいですか。ただし、可能であれば、< 10/12/2011 などの今日の日付ではなく、12 か月に基づくもの

4

3 に答える 3

7
select *
from t
where "health&safety_check" < add_months(sysdate, -12)
于 2012-12-12T05:52:11.927 に答える
6

何かのようなもの:

select *
from t
where add_months("health&safety_check", 12) < sysdate

現在の日付をハードコーディングしたくないが、変数を使用することに満足していると思います。

ジェフはコメントの中で良い点を述べています(ただし、Oracleでは、関数にインデックスを作成して問題を回避できます)。これは簡単に修正できます。

where "health&safety_check" <add_months(sysdate, -12)
于 2012-12-10T18:45:13.673 に答える
0

次のクエリを使用できます。

SELECT *
FROM table_name
WHERE `health&safety_check` < ADDDATE(NOW(), INTERVAL -12 MONTH)

ADDDATE(NOW(), INTERVAL -12 MONTH) は、この日付から 12 月を引いたものを意味します。他の日付フィールドまたは変数を使用して NOW() を変更できます。

NOW() は今日を意味します。

于 2012-12-11T03:05:32.683 に答える