• ベストアンサー

MySQLのTimestamp型の使い方

MySQLとPHPで製作しています。 registdateとlastaccessとういうカラムにtimestampを設定して 登録操作でINSERT文にregistdateとlastaccessの両方にNow()として登録。 更新操作でUPDATE文にlastaccessのみにNow()として更新したいのですが、更新作業の際に2つのカラムが更新されます。設定の方法を教えてください。

  • MySQL
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

バージョンが書かれていないし、説明が面倒なのでマニュアルでの記載ページを参考URLで示します。 簡単な方法としては、datetime型を使うことのようです。

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

その他の回答 (1)

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

確かtimestamp型は何も指定せずUPDATEすると現在時刻がセットされる仕様になっているはずです。 前の値を残したいなら明示的に指定してやってください。

eccschool
質問者

補足

その設定方法をご存知ないですか?

関連するQ&A

  • MySQLのTimestamp型

    MySQLのinsert分で現在の年月日時間をテーブルに入れたいのですがどのように書いたら良いですか? 教えてください。TIMESTAMP型がうまく働きません。PHPで書いています。

    • ベストアンサー
    • MySQL
  • timestampを引算し6ヵ月以上ならフラグ=1

    登録されているレコードが6カ月または12ヶ月以内か判定し、TRUEならフラグに1を記すSELECT文をご教示お願いいたします。 MySQL5です。テーブル mytableに、 (1) myName(氏名、varchar(600)、レコード例:加藤太郎) (2) RegistDate(INSERTした日付、timestamp、レコード例:2005-06-25 09:30:00) と2カラムがあります。 考え方としては照会時に、 「本日のサーバーの月度 マイナス RegistDateの月度 ≧ 7ヶ月(または13ヶ月)」なら「myFlag=1」ということになるかと思いますが・・・ select case when to_days(now()) - to_days(RegistDate) >=7 then myFlag = '1' from mytable とか、 IF THENなどになろうかと思いますが、よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • [MYSQL]TIMESTAMPをWHERE句に指定しUPDATEする方法

    以下のようにテーブルを作成し、TIMESTAMP型のカラムをキーにUPDATEをしたいと考えています。 create table test(time timestamp, amount int); insert into test values('2008-01-07 19:15:12',0); update test set amount = -1 where time = '2008-01-07 19:15:12'; ところがMYSQLではUPDATE後、TIMESTAMPのカラムが2008年から2009年に変化します。ORACLEで試しましたが、TIMESTAMP型のカラムは変わりませんでした。 +---------------------+--------+ | time | amount | +---------------------+--------+ | 2009-06-30 10:04:53 | -1 | +---------------------+--------+ MYSQLの独自の仕様があるのでしょうか? MYSQL 5.1.35(mysql-essential-5.1.35-win32.msi) Windows 2003 Server Standard Edition R2 MYISAM

    • ベストアンサー
    • MySQL
  • update時にtimestampが更新されない

    昨日SQLについて学び始めたばかりでわからないことが多く、質問させていただきます。 フィールドをtimestamp型で定義すれば、insert時やtimestamp時に自動的に日時が更新されるということですが、なぜかupdate時に更新されません。 insert時にはちゃんと日時が入りますし、insert後にtimestampのカラムにNULLをいれたときも更新されました。なせupdate時だけ更新されないのでしょう?

  • MySQL TIMESTAMP型は、UTCですか?

    MySQL5で、 TIMESTAMP型のカラムに格納されるのは、UTCでしょうか。 それともローカルタイムゾーンなのでしょうか? あるいは、設定による、のでしょうか? >TIMESTAMP カラムの値は、ストレージでは現在のタイム ゾーンから UTC へ、読み出しでは UTC からカレントのタイム ゾーンに変換します。 http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html と書いてあったのを見て、TIMESTAMP型のカラムに格納されるのは、UTC(日本時間-9)だ、と思ったのですが、 実際にカラムの中を確認してみると、その時点の日本時間が格納されています。 >TIMESTAMP 値は、現在のタイムゾーンから変換されて格納され、また検索された時に現在のタイムゾーンに再変換されながら、UTCに格納されます。 http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html こちらでも、「UTCに格納されます」って書かれているのですが、 これは、「現在のタイムゾーンをそれぞれの接続ごとに設定した場合」に限っての話なのでしょうか? それとも、ストレージでは、って書かれているので、 ストレージのことが絡んでいるのでしょうか?(ストレージって何のことですか)

    • ベストアンサー
    • MySQL
  • now()かCURRENT_TIMESTAMPか

    いつもお世話になります。 アンケート的な質問があります。 datetime型の登録日カラムがあるとします。 普段は登録日時としてCURRENT_TIMESTAMPを使用して インサートしています。 しかし、同様の関数でnow()がありますが、 みなさんはどちらを利用していますでしょうか? 使い分けがいまいちわかりませんので、質問いたしました。 どうぞ宜しくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLのtimestamp型での時差の扱いについて

    MySQLのtimestamp型で質問があるのですが、 時差の設定はできるのでしょうか? timestamp型は更新日時を取得してくれて便利なのですが、 海外のレンタルサーバーを借りているため、 日本と時差が合わず困っています。 もし何かご存知の方いましたら、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • TIMESTAMPについて

    MySQLを用いて会員管理システムを構築しております。 仮登録者テーブルと本登録者テーブルの二つを用意しており、 仮登録者の本人確認が取れた時点で、本登録者テーブルへ データを丸々コピーする仕様にしております。 この際に、仮登録日時をTIMESTAMPを用いて日時を取得していますが、 本登録者テーブルへデータをコピーするタイミングで、【 本登録日時 】を 計算させるSQL文等をどの様に記述すればいいのかが分かりません。 現在は、この様なSQL文にしております。 ---------------------------------------------------------------------- $sql = "INSERT INTO user_table SELECT * FROM user_table_2 WHERE (number = ".intval($number).");"; ---------------------------------------------------------------------- user_table_2( 仮登録者テーブル )のデータをuser_table( 本登録者テーブル )へ コピーします。 【 仮登録の日時 】+【 本登録操作を行った日時 】=【 本登録日時 】という計算を WHERE句で実行出来るものなのでしょうか? それとも他に別の方法がありましたら、何卒ご教授いただきたく存じます。 各スペックは以下の通りです。 ---------------------------------- PHP 5.1.6 MySQL 5.0.77 サーバOS Linux ---------------------------------- どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • TIMESTAMP型のカラムに作成日時がセットされません

    WindowsでMySQL4.1.12を使っていますが、mysqlimport でインポートした時、TIMESTAMP型のカラムに作成日時 がうまく自動的にセットされません。MySQLの マニュアルにはTIMESTAMP型のカラムには\N(NULL値) を設定すればいいとあるのですが、うまくいきません。 どうしたらうまく自動的にセットされるでしょうか? よろしくお願いします。

  • intの数字をtimestampに変換したい

    php5,mysql5.1の環境です。 mysqlのフィールドにint(11)でunix timestampを挿入しています。 その11桁の数字の羅列をunixのタイムスタンプ形式に変更したいのですがどのようにすればよいのでしょうか。 うまく説明できないのですが、その11桁の数字はタイムスタンプとしてphp側で処理できないのでしょうか。 mysqlの種別カラムにおいて、int(11)とtimestampは同一のデータとして処理できないのでしょうか。

    • ベストアンサー
    • PHP