Автоматическое заполнение столбца даты MySQL текущей датой

У меня есть таблица, где у меня есть . Есть ли способ для MySQL автоматически заполнять это поле всякий раз, когда я вставляю новый реестр с текущей датой? Или это сделано автоматически по умолчанию?

П. С.: Я с помощью phpMyAdmin

6 ответов


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

MY_DATE дата по умолчанию '2014-01-19'


хотя это старый пост, возможно, это изображение поможет, поскольку оно более явное: (Для пользователей phpMyAdmin)

enter image description here

эта конфигурация устанавливает это поле со значением типа:

2015-12-11 07:50:47

PS: обратите внимание, что отметка времени будет устанавливать время вашего сервера!! (т. е. пример выше получил время от Pacific Time (07: 50: 47), но это могло быть от испанского пользователя в 16: 50: 47 по местному времени) Имейте это в виду.

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

готов к рок!

enter image description here


установите значение по умолчанию в вашем запросе mySql

CURRENT_TIMESTAMP

вы должны использовать

сейчас()

функция, где вы хотите заполнить текущее время.

т. е.:

INSERT INTO  user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42',  '160',  '1',  now());

Я понимаю, что это не может быть прямым ответом на вопрос, но я считаю, что это наиболее полезное решение.

Я настоятельно рекомендую использовать тип данных DATETIME или TIMESTAMP для рассматриваемого столбца.
Если вы используете довольно текущую версию MySQL, MySQL сделает работу за вас.

подробности:
Чтобы быть очень ясным, начиная с 5.6.5, для типов данных TIMESTAMP & DATETIME вы можете сделать следующий:

  1. установите значение по умолчанию текущей даты и времени (используя NOW () или один из его псевдонимов, таких как CURRENT_TIMESTAMP)
    это означает, что каждый раз, когда вы вставляете новую строку в эту таблицу, столбец TIMESTAMP или DATETIME с этим значением по умолчанию получит текущую дату и время
  2. Установите ограничение ON UPDATE, которое обновит столбец до текущей даты и времени, когда (вы догадались) строка будет обновлена

здесь как:
Пример в инструкции CREATE TABLE:

CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP
,ts2 DATETIME DEFAULT NOW()
);

обратите внимание, что DATETIME можно заменить меткой времени для той же функциональности.
кроме того, я предлагаю использовать тип данных DATETIME по метке времени, поскольку DATETIME имеет гораздо больший диапазон дат, которые он может поддерживать. Стоит отметить, что временная метка меньше для тех немногих случаев, которые имеют значение.
для более подробной информации, пожалуйста, прочитайте мой ответ здесь: https://stackoverflow.com/a/26117532/1748266


вы можете сделать что-то подобное с экрана SQL

ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL