アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問です。
DB2で、システム日付のinsert、updateを行うSQLを作成したいのですが、どのようにしたら良いでしょうか?

また、参考になるようなサイトなどありましたら教えてください。

どなたか宜しくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

成功例と同じく、テーブルをCREATEしてから行った場合に正常に実行されました。

今までなぜできなかったのか疑問ですが・・・。
お手数おかけして申し訳ありません。

ありがとうございました!!

お礼日時:2005/02/08 17:54

そうですか・・・。


そうすると current date が正しく取得できていないかも知れません。(そんなことは聞いたことが無いですが・・・。)

次のコマンドの結果はどうなりますか?
values current date

あと、DB2のバージョン(db2level)、OSは何ですか?
あと、環境はCLP(コマンドライン)ですか?アプリケーションですか?

この回答への補足

values current dateでは、日付が正常に取得できます。

DB2バージョン:v7.1.0.43
OS:windows2000
環境はコマンドラインです。

ちなみに、INSERTの場合は正常に実行されるのですが、何か関係があるのでしょうか?

よろしくお願いします。

補足日時:2005/02/08 16:47
    • good
    • 0

no 列は 何型ですか?

この回答への補足

no列はINTEGERです。

補足日時:2005/02/08 15:59
    • good
    • 0

no列 か date列 の型が違うのだと思います。


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

この回答への補足

列のデータ型を調べてみたところ、
date列はDATE型でした。

current dateで得られる日付は、DATE型ではないのですか?

ちなみに先ほどのエラーコードは、SQLSTATE=42818です。

補足日時:2005/02/08 14:14
    • good
    • 0

はい。

この回答への補足

UPDATE tablename SET date = current date WHERE no = 1

上記SQLのdate列はDATE型なのですが、実行すると、

「演算 "=" のオペランドのデータ・タイプが一致していません。」

とエラーになってしまいます。

これは、DATE列とcurrent dateのデータ型が異なるからでしょうか?

補足日時:2005/02/08 12:35
    • good
    • 0

current date を使うと良いです。

この回答への補足

ありがとうございます。

ちなみに、使い方としては、

UPDATE tablename SET date = current date WHERE no = 1

でよろしいのでしょうか?

補足日時:2005/02/08 10:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す