人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLについて質問です。
現在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 となっており環境的には問題ないと思います。
お手数をおかけしますがよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:MySQL SET test クライアント データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● HALSPECIAL
●100ポイント ベストアンサー

こちらでいかがでしょうか?

■日付の差 (日付間隔、日付範囲)

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_16.htm

・to_days() をうまく利用する

UPDATE TEST SET DATA3 = (to_days(DATA2) - to_days(DATA1))
◎質問者からの返答

ご回答ありがとうございます。


2 ● kn1967
●10ポイント

(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);

ここまで問題がなければ、初めてプログラムのほうに書きます。

そしてさらに動作確認をします。

よほど使い慣れていれば別だと言いたいのですが、

慣れた人でも、いえ、慣れた人ほど上記のような確認は行います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ