Дайте командата 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 и се превеждат в местно време при извличане.