先ほど、DBを利用して組んでいるのですが、DATETIMEというのがありますよね。
僕の認識では、データを入れた瞬間にその時間帯が自動的に入力される、という認識なのですが、、、この認識で間違いないでしょうか?
また、データの一部を、update などを用いて修正をした場合は、DATETIME はまた作動するのでしょうか?
望んでいる動作をするのは TIMESTAMP型です。
DATETIME型は日付と時間を格納する単なるデータ型です。
DATETIMEというのは単に「日付と時間をもつ型」なだけですので、insertした瞬間の時間が自動的に入力されるというのは間違いです。
insert時の時間をセットしたければ NOW() や CURRENT_TIMESTAMP で現在時刻を取得できますし、固定値を入れたければ '2007-10-28 14:17:20' の様な値を入れてやれば良いです。updateでも同じです。
ちなみにinsert時にデフォルト値として現在時刻が入るのは TIMESTAMP 型ではないでしょうか?DATETIMEはデフォルトはNULLが入ると思います。
ありがとうございます。上記の方でも申し上げましたが、勘違いでした。すいません。
その認識は間違っています。そういう用途ではTIMESTAMP型を使います。
また、MAXDBモードか否かで挙動が変わります。詳しくは次のドキュメントをどうぞ。
すいません。わざわざ、ありがとうございます。こちらの不手際でした。
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の列の中の値はそのままです。
すいません、間違っておりました。
勘違いでした。
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 型
すいません、間違いをしておりました。
わざわざありがとうございました。
ありがとうございます。すいません、勘違いをしておりました。