2009-05-03 18 views
34

私は、MySQL 5.x(PHP付き)でタイムスタンプを使用してイベント時刻を記憶しています。開発中に、すべての列で何かを変更するクエリでテーブルを更新する必要がありました。タイムスタンプは現在の時刻にリセットされました。MySQLタイムスタンプのみ作成時

タイムスタンプの変更は、挿入時のみ変更できますが、更新や置き換えはできません。

+1

Googleにこれを行う他の人のための遅い回答:データベースでマニュアル編集を行うときにTIMESTAMPを使用する場合。または複数のTIMESTAMP列があり、それらのすべてに触れたくない場合は、 MySQLのマニュアルでは、カラムを自分自身に割り当てるように指示しています。明示的に列を現在の値に設定すると(つまり、 "updated_on = updated_on")、UPDATEによって変更されません。 –

答えて

65

Here's all you need to know。要するに、しかし、私は、これはそれを行うべきだと思う。ここfor time-stamp

ALTER TABLE `mytable` 
CHANGE `mydatefield` `mydatefield` 
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

ありがとう!ここでは "NOT NULL"の部分は必要ないと思います。 –

0

このフィールドにはdefault valueを使用でき、挿入または更新クエリには含めることはできません。

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

非常に良いドキュメント。

+0

私は何かが欠けているかもしれませんが、私のテーブルはこのように定義されていますが、それでも日付は変わりました。 mysqlの説明: 'pur_time'、 'timestamp'、 'NO'、 ''、 'C​​URRENT_TIMESTAMP'、 '' – Nir

1

その列にDATETIMEを使用することをおすすめします。レコードが更新されても変更されません。

私にとって、私はTIMESTAMPを使用して、レコードが最後にタッチされたときに追跡しますが、一般的には使用しません。

関連する問題