ここから本文です

DB2にて日付に関する下記のSQLを考えているのですが、 些細なことでもかまいませ...

sec********さん

2017/9/421:00:05

DB2にて日付に関する下記のSQLを考えているのですが、
些細なことでもかまいませんので、ご教示いただけませんでしょうか?

(例)TIMESTAMP型のカラム「DELETE_TIME」があるテーブル「Hoge」

(条件)
・DELETE_TIMEから1週間(7日)以上たったレコードだけを抽出したい
・1週間(7日)たったレコードはSYSDATE(SQL実行時刻)以内が対象である
たとえば 2017/06/08(木) 12:00に実行した場合 2017/06/01(木) 00:00:00 ~ current_timestamp(2017/06/08(木) 12:00)までを抽出としたい

補足失礼いたしました。SYSDATE = current_timestampです。

閲覧数:
45
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

gor********さん

2017/9/813:47:11

なんか(条件)の記載がちょっと辻褄あわないよーな気がしますが・・・
こんな感じですか?
---------
$ db2 "select * from hoge order by number"

NUMBER NAME DELETE_TIME
----------- ---------- --------------------------
1 A 2017-08-31-10.00.00.000000
2 B 2017-09-01-10.00.00.000000
3 C 2017-09-02-10.00.00.000000
4 D 2017-09-03-10.00.00.000000
5 E 2017-09-04-10.00.00.000000
6 F 2017-09-05-10.00.00.000000
7 G 2017-09-06-10.00.00.000000
8 H 2017-09-07-10.00.00.000000
9 I 2017-09-08-10.00.00.000000

9 レコードが選択されました。

$ db2 "select * from hoge where delete_time > (current date - 7 days) and date(delete_time) < current date order by number"

NUMBER NAME DELETE_TIME
----------- ---------- --------------------------
3 C 2017-09-02-10.00.00.000000
4 D 2017-09-03-10.00.00.000000
5 E 2017-09-04-10.00.00.000000
6 F 2017-09-05-10.00.00.000000
7 G 2017-09-06-10.00.00.000000
8 H 2017-09-07-10.00.00.000000
9 I 2017-09-08-10.00.00.000000

7 レコードが選択されました。

$

最終レコードまでなら「and」以降の条件不要ですが、一応つけてみました。
v10.5で試してて気がついたんですが、db2 values current date などで、current date の出力を確認したところ、時刻まで出力されるようです。
「<」や「>」などで、「〜より前の日」や「〜より後の日」を厳密に指定したい場合は要注意です。
時刻部分をsubstr関数などでぶった切るか、month関数やday関数で値を取り出して比較したほうが良いかもしれません。

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる