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

Perl で MySQL を利用しています。

先ほど、DBを利用して組んでいるのですが、DATETIMEというのがありますよね。

僕の認識では、データを入れた瞬間にその時間帯が自動的に入力される、という認識なのですが、、、この認識で間違いないでしょうか?

また、データの一部を、update などを用いて修正をした場合は、DATETIME はまた作動するのでしょうか?

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB MySQL Perl データ 入力
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● moke3rd
●20ポイント

望んでいる動作をするのは TIMESTAMP型です。

DATETIME型は日付と時間を格納する単なるデータ型です。

http://dev.mysql.com/doc/refman/4.1/ja/datetime.html

◎質問者からの返答

ありがとうございます。すいません、勘違いをしておりました。


2 ● y-kawaz
●20ポイント

DATETIMEというのは単に「日付と時間をもつ型」なだけですので、insertした瞬間の時間が自動的に入力されるというのは間違いです。

insert時の時間をセットしたければ NOW() や CURRENT_TIMESTAMP で現在時刻を取得できますし、固定値を入れたければ '2007-10-28 14:17:20' の様な値を入れてやれば良いです。updateでも同じです。

ちなみにinsert時にデフォルト値として現在時刻が入るのは TIMESTAMP 型ではないでしょうか?DATETIMEはデフォルトはNULLが入ると思います。

http://dev.mysql.com/doc/refman/5.1/ja/datetime.html

◎質問者からの返答

ありがとうございます。上記の方でも申し上げましたが、勘違いでした。すいません。


3 ● iwaim
●20ポイント

その認識は間違っています。そういう用途ではTIMESTAMP型を使います。

また、MAXDBモードか否かで挙動が変わります。詳しくは次のドキュメントをどうぞ。

http://dev.mysql.com/doc/refman/4.1/ja/datetime.html

◎質問者からの返答

すいません。わざわざ、ありがとうございます。こちらの不手際でした。


4 ● 敷守ほむら
●20ポイント

DATETIMEというのは、あくまで「型」です。日付と時刻を入れることができる型、ということになります。

http://dev.mysql.com/doc/refman/4.1/ja/datetime.html

僕の認識では、データを入れた瞬間にその時間帯が自動的に入力される、という認識なのですが、、、この認識で間違いないでしょうか?

この認識は間違っています。

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

http://www.limy.org/program/db/mysql/mysql_operators.html

データを入れた瞬間にその時間帯を自動的に入力するには、SQLで明示的に、次のような感じで、その時の時間を自動的に入力するよう指示する必要があります。

INSERT INTO foo VALUES(NOW())

または

INSERT INTO foo VALUES(SYSDATE())

Now()またはSYSDATE()、で今現在の日付と時刻を得ることができます。

また、データの一部を、update などを用いて修正をした場合は、DATETIME はまた作動するのでしょうか?

この認識も間違っています。

http://dev.mysql.com/doc/refman/4.1/ja/update.html

updateで修正をする場合に、DATETIMEの列をupdate文に含めなければ、DATETIMEの列の中の値はそのままです。

◎質問者からの返答

すいません、間違っておりました。

勘違いでした。


5 ● chuken_kenkou
●20ポイント

MySQLのDATETIME型は、ユーザ任意の日時を入れるデータ型です。

INSERTやUPDATEを実行時の日時を入れることもできれば、まったく異なる日時を入れることもできます。

INSERTやUPDATE実行時の日時を入れるには、CURRENT_TIMESTAMP関数を使えます。これ以外に、日時を文字定数で、'2007-10-29 18:00:00'のように指定することも可能です。

一方、MySQLのTIMESTAMP型は、他のRDBMSとは異なり、利用者側の値の指定に関係なく、MySQL側が自動的に日時を格納するので、注意が必要です。

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.2.2.2 DATETIME、DATE、TIMESTAMP 型

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.4 日付と時刻関数

◎質問者からの返答

すいません、間違いをしておりました。

わざわざありがとうございました。

関連質問


●質問をもっと探す●



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