Столбец временной метки mysql

Можно ли определить столбец отметки времени в таблице MySQL, который будет автоматически обновляться каждый раз при изменении поля в той же строке? В идеале этот столбец должен изначально быть установлен на время вставки строки.

Привет, Дон


person Dónal    schedule 30.09.2008    source источник


Ответы (4)


Это функциональность по умолчанию для отметки времени тип столбца. Однако обратите внимание, что формат этого типа — ггггммддччммсс (все цифры, без двоеточий или других разделителей).

EDIT: Приведенный выше комментарий о формате верен только для версий MySQL ‹ 4.1... Более поздние версии форматируют его как DateTime.

person Adam Bellaire    schedule 30.09.2008
comment
Согласно документам MySQL 5.0, тип метки времени имеет тот же формат, что и дата/время (например, «ГГГГ-ММ-ДД ЧЧ:ММ:СС»). - person Mark Biek; 01.10.2008

Вы можете использовать столбец меток времени, как упоминалось в других плакатах. Вот SQL, который вы можете использовать для добавления столбца:

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

Это добавляет столбец под названием «lastUpdated» со значением по умолчанию текущей даты/времени. Когда эта запись будет обновлена ​​(скажем, через 5 минут), эта отметка времени автоматически обновится до текущего времени.

person Community    schedule 30.09.2008
comment
Достаточно следующего: ALTER TABLE table1 ADD lastUpdated TIMESTAMP; - person Dónal; 02.10.2008

Это то, что я наблюдал (MySql 5.7.11) -

Первый столбец TIMESTAMP в таблице получает текущую временную метку в качестве значения по умолчанию. Таким образом, если вы выполняете INSERT или UPDATE без указания значения, столбец получит текущую отметку времени.

Любые последующие столбцы TIMESTAMP должны иметь явно заданное значение по умолчанию. Если у вас есть два столбца TIMESTAMP и вы не укажете значение по умолчанию для второго столбца, вы получите эту ошибку при попытке создать таблицу:

ОШИБКА 1067 (42000): Недопустимое значение по умолчанию для "COLUMN_NAME"

person Do Will    schedule 14.03.2016

Отметка времени MySQL устанавливается с временем создания или обновления, только если их значение по умолчанию установлено как оно. ALTER TABLE some_table ADD when TIMESTAMP DEFAULT CURRENT_TIMESTAMP.
В противном случае оно работает так же, как поле DateTime, за исключением того, что оно относится к 1970/01/01 UTC, поэтому это абсолютный момент времени, не зависящий от конкретного часового пояса, как DateTime.

person Petruza    schedule 15.11.2010