• ベストアンサー

DB2のSQL(日付)について

文字列で8桁の日付(例:20041208)を持っている項目の条件に本日日付以上という条件をつけたいのですが、 (例:where NEN >= 本日日付の文字列8桁 ) ※NEN:20041208 SQLでシステム日付を文字列8桁にする方法はありますか? ご教授お願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • AS400
  • ベストアンサー率69% (9/13)
回答No.2

(前にも回答したと思うのですが、入っていないようなので再度入力します) 大小の比較をしたいのでしたら、DATE型を文字列にしても駄目で、文字列をDATE型に変換する必要があります。 8文字で表された日付をDATE型に変換する関数はDB2には用意されていないので、自分で用意する必要があります。 CREATE FUNCTION STR2DATE (dateString VARCHAR(8)) RETURNS DATE SPECIFIC STR2DATE LANGUAGE SQL DETERMINISTIC CONTAINS SQL BEGIN ATOMIC DECLARE ret VARCHAR(10); IF (LENGTH(dateString) != 8) THEN RETURN DATE('1970-01-01'); END IF; set ret = LEFT(dateString,4) || '-' || SUBSTR(dateString,5,2) || '-' || RIGHT(dateString,2); RETURN ret; END@ という感じでSTR2DATE関数を用意しておいて、 SELECT ... WHERE STR2DATE(NEN) >= CURRENT DATE とやればうまくいくのではないでしょうか。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

本家IBMさんのページです。 カスタム日付/時刻形式の設定 を参照ください。 TO_CHAR([列名], 'yyyymmdd') では駄目なのかな?

参考URL:
http://www-6.ibm.com/jp/software/data/developer/library/techdoc/daytime.html

関連するQ&A