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

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

P.S.: Я использую PHPMyAdmin

Ответ 1

К сожалению, MySQL не позволяет указывать значения, отличные от констант, в качестве значений по умолчанию для столбцов, отличных от TIMESTAMP.

Эта функция доступна в версиях MySQL 8. 0+, но для более старых версий единственным решением для базы данных, определенной по умолчанию, будет использование триггера.

Ответ 2

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

введите описание изображения здесь

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

2015-12-11 07:50:47

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

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

Готовый рок!

введите описание изображения здесь

Ответ 3

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

CURRENT_TIMESTAMP

Ответ 4

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

now()

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

то есть:.

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

Ответ 5

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

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

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

  • Задайте значение DEFAULT текущей даты и времени (используя NOW() или одну из его псевдонимов, таких как CURRENT_TIMESTAMP). Это означает, что каждый раз, когда вы вставляете новую строку в эту таблицу, столбец TIMESTAMP или DATETIME с этим значением по умолчанию получат текущую дату и время
  • Установите ограничение ON UPDATE, которое будет ОБНОВИТЬ столбец к текущей дате и времени, когда (как вы уже догадались) строка обновлена ​​

Вот как:
Пример в инструкции CREATE TABLE:

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

Обратите внимание, что DATETIME может быть заменен на TIMESTAMP для эффективной работы с теми же функциями.
Кроме того, я предлагаю использовать тип данных DATETIME над TIMESTAMP, поскольку DATETIME имеет гораздо больший диапазон дат, которые он может поддерживать. Стоит отметить, что TIMESTAMP меньше для тех немногих случаев, которые имеют значение.
Подробнее читайте здесь: fooobar.com/questions/481238/...

Ответ 6

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

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

Ответ 7

Я добавил это в свою таблицу, и она работает

ALTER TABLE Medewerkers ADD med_created TIMESTAMP DEFAULT now(); 

Когда вы вставляете данные в свою запись, она автоматически обновляет med_created