- ベストアンサー
DB2でのシステム日付のinsert、updateについて。
質問です。 DB2で、システム日付のinsert、updateを行うSQLを作成したいのですが、どのようにしたら良いでしょうか? また、参考になるようなサイトなどありましたら教えてください。 どなたか宜しくお願いします。
- みんなの回答 (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
その他の回答 (5)
- ishi00
- ベストアンサー率83% (10/12)
そうですか・・・。 そうすると current date が正しく取得できていないかも知れません。(そんなことは聞いたことが無いですが・・・。) 次のコマンドの結果はどうなりますか? values current date あと、DB2のバージョン(db2level)、OSは何ですか? あと、環境はCLP(コマンドライン)ですか?アプリケーションですか?
補足
values current dateでは、日付が正常に取得できます。 DB2バージョン:v7.1.0.43 OS:windows2000 環境はコマンドラインです。 ちなみに、INSERTの場合は正常に実行されるのですが、何か関係があるのでしょうか? よろしくお願いします。
- ishi00
- ベストアンサー率83% (10/12)
no 列は 何型ですか?
補足
no列はINTEGERです。
- ishi00
- ベストアンサー率83% (10/12)
no列 か date列 の型が違うのだと思います。 こういうときは describe table tablename の結果を確認しましょう。 あとエラーコードも明記したほうが良いと思います。
補足
列のデータ型を調べてみたところ、 date列はDATE型でした。 current dateで得られる日付は、DATE型ではないのですか? ちなみに先ほどのエラーコードは、SQLSTATE=42818です。
- ishi00
- ベストアンサー率83% (10/12)
はい。
補足
UPDATE tablename SET date = current date WHERE no = 1 上記SQLのdate列はDATE型なのですが、実行すると、 「演算 "=" のオペランドのデータ・タイプが一致していません。」 とエラーになってしまいます。 これは、DATE列とcurrent dateのデータ型が異なるからでしょうか?
- ishi00
- ベストアンサー率83% (10/12)
current date を使うと良いです。
補足
ありがとうございます。 ちなみに、使い方としては、 UPDATE tablename SET date = current date WHERE no = 1 でよろしいのでしょうか?
お礼
成功例と同じく、テーブルをCREATEしてから行った場合に正常に実行されました。 今までなぜできなかったのか疑問ですが・・・。 お手数おかけして申し訳ありません。 ありがとうございました!!