столбец метки времени mysql - PullRequest
       38

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

26 голосов
/ 01 октября 2008

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

Ура, Дон

Ответы [ 5 ]

39 голосов
/ 01 октября 2008

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

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

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

19 голосов
/ 01 октября 2008

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

РЕДАКТИРОВАТЬ: Приведенный выше комментарий о формате верен только для версий MySQL <4.1 ... Более поздние версии форматируют его как <strong>DateTime

2 голосов
/ 14 марта 2016

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

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

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

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

0 голосов
/ 16 ноября 2010

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

0 голосов
/ 01 октября 2008

IIRC, первый столбец таблицы типа timestamp устанавливается при создании записи и не может быть изменен. 2-й столбец типа timestamp устанавливается при каждом обновлении записи. Или наоборот.

Я не проделал много работы с MySQL, поэтому вам нужно это проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...