コマンドSHOW CREATE TABLE whatever
を指定します
次に、テーブルの定義 を確認します。 。
おそらくこのような行があります
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
初期化。 DEFAULT CURRENT_TIMESTAMP
INSERT
を意味します 明示的なタイムスタンプ設定がない場合は、現在の時刻が使用されます。同様に、ON UPDATE CURRENT_TIMESTAMP
明示的なタイムスタンプなしで更新すると、現在のタイムスタンプ値が更新されることを意味します。
テーブルを作成するときに、このデフォルトの動作を制御できます。
または、タイムスタンプ列が最初から正しく作成されていない場合は、変更できます。
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
これにより、テーブルに対するINSERT操作とUPDATE操作の両方が自動的にタイムスタンプ列を更新します。 whatevertable
を更新する場合 タイムスタンプを変更せずに、つまり
次に、この種の更新を発行する必要があります。
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
これはTIMESTAMP
で機能します およびDATETIME
列。 (MySQLバージョン5.6.5より前は、TIMESTAMP
でのみ機能していました。 s)TIMESTAMP
を使用する場合 s、タイムゾーンが考慮されます。正しく構成されたサーバーマシンでは、これらの値は常にUTCで保存され、取得時に現地時間に変換されます。