現在DATEDIFF関数を使用して、データを保存したいと考えています。
具体的にやりたいことですが、仕入れ日から販売日までどれくらいの期間かかったか?
というのを出したいと考えています。
データは以下のようになっており
テーブル:TEST
項目:DATA1 DATA2 DATA3
DATA1に仕入れ日がDATE型で入っています。 例)2009年12月1日
DATA2に販売日がDATE型で入っています。 例)2009年12月10日
DATA3にDATA1とDATA2の差が入るのが理想です。 例)9日
自分で作成をしてみたのですが、うまくいかず
UPDATE TEST SET DATA3=DIFFTIME(DATA1,DATA2)
としてみたのですが、失敗してしまいます。
うまく日にちを出すDATEDIFFのやり方を知っている方おりましたら教えていただけないでしょうか?
Versionも MySQL クライアントのバージョン: 4.1.22 となっており環境的には問題ないと思います。
お手数をおかけしますがよろしくお願いいたします。
こちらでいかがでしょうか?
■日付の差 (日付間隔、日付範囲)
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_16.htm
・to_days() をうまく利用する
UPDATE TEST SET DATA3 = (to_days(DATA2) - to_days(DATA1))
こちらでいかがでしょうか?
■日付の差 (日付間隔、日付範囲)
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_16.htm
・to_days() をうまく利用する
UPDATE TEST SET DATA3 = (to_days(DATA2) - to_days(DATA1))
ご回答ありがとうございます。
(1)データ型
DIFFTIME関数の戻り値は日数という数値です。
DATA3 のデータ型を確認してください。
(2)計算の行われ方
DIFFTIME(DATA1,DATA2)の場合はDATA1 - DATA2 = -9となってしまいます。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数
(3)困った時の確認方法
MySQLに直接SELECTを流し込んで、正常に動くかどうかを確認します。
SELECT DIFFTIME(DATA1,DATA2) FROM TEST;
問題がなければ同じく直接UPDATEを流し込んで書き換えます。
UPDATE TEST SET DATA3=DIFFTIME(DATA1,DATA2);
ここまで問題がなければ、初めてプログラムのほうに書きます。
そしてさらに動作確認をします。
よほど使い慣れていれば別だと言いたいのですが、
慣れた人でも、いえ、慣れた人ほど上記のような確認は行います。
ご回答ありがとうございます。