• ベストアンサー

DB2でのシステム日付のinsert、updateについて。

質問です。 DB2で、システム日付のinsert、updateを行うSQLを作成したいのですが、どのようにしたら良いでしょうか? また、参考になるようなサイトなどありましたら教えてください。 どなたか宜しくお願いします。

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

  • ベストアンサー
  • ishi00
  • ベストアンサー率83% (10/12)
回答No.6

そうですか・・・。 DB2V8 FP2 on WinXPProのCLPではうまくいっていますが・・・。 (成功例) db2 connect to sample db2 create table hoge(no integer,date date) db2 insert into hoge values (1,current date) db2 update hoge set date=current date where no=1 ちなみに db2 update hoge set date=current date where no='1' ⇒SQL0401N(SQLSTATE=42818)エラー db2 update hoge set date=integer(current date) where no=1 ⇒SQL0408N(SQLSTATE=42821)エラー でした。 no列はINTEGER型で間違いないんですよね? 以下はどういうエラーになりますか? db2 update hoge set date=current date

asamn777
質問者

お礼

成功例と同じく、テーブルをCREATEしてから行った場合に正常に実行されました。 今までなぜできなかったのか疑問ですが・・・。 お手数おかけして申し訳ありません。 ありがとうございました!!

その他の回答 (5)

  • ishi00
  • ベストアンサー率83% (10/12)
回答No.5

そうですか・・・。 そうすると current date が正しく取得できていないかも知れません。(そんなことは聞いたことが無いですが・・・。) 次のコマンドの結果はどうなりますか? values current date あと、DB2のバージョン(db2level)、OSは何ですか? あと、環境はCLP(コマンドライン)ですか?アプリケーションですか?

asamn777
質問者

補足

values current dateでは、日付が正常に取得できます。 DB2バージョン:v7.1.0.43 OS:windows2000 環境はコマンドラインです。 ちなみに、INSERTの場合は正常に実行されるのですが、何か関係があるのでしょうか? よろしくお願いします。

  • ishi00
  • ベストアンサー率83% (10/12)
回答No.4

no 列は 何型ですか?

asamn777
質問者

補足

no列はINTEGERです。

  • ishi00
  • ベストアンサー率83% (10/12)
回答No.3

no列 か date列 の型が違うのだと思います。 こういうときは describe table tablename の結果を確認しましょう。 あとエラーコードも明記したほうが良いと思います。

asamn777
質問者

補足

列のデータ型を調べてみたところ、 date列はDATE型でした。 current dateで得られる日付は、DATE型ではないのですか? ちなみに先ほどのエラーコードは、SQLSTATE=42818です。

  • ishi00
  • ベストアンサー率83% (10/12)
回答No.2

はい。

asamn777
質問者

補足

UPDATE tablename SET date = current date WHERE no = 1 上記SQLのdate列はDATE型なのですが、実行すると、 「演算 "=" のオペランドのデータ・タイプが一致していません。」 とエラーになってしまいます。 これは、DATE列とcurrent dateのデータ型が異なるからでしょうか?

  • ishi00
  • ベストアンサー率83% (10/12)
回答No.1

current date を使うと良いです。

asamn777
質問者

補足

ありがとうございます。 ちなみに、使い方としては、 UPDATE tablename SET date = current date WHERE no = 1 でよろしいのでしょうか?

関連するQ&A