2014-01-20 7 views
9

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

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

+1

Это должно быть то, что вы ищете ... http://stackoverflow.com/questions/168736/how-do-you-set- a-default-value-for-a-mysql-datetime-column –

+0

Возможные дубликаты: http://stackoverflow.com/questions/3696778/create-table-fail-in-mysql-when-using-curdate-as-default , http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column, http://stackoverflow.com/questions/5818423/set -now-as-default-value-for-datetime-datatype –

ответ

1

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

my_date ДАТА DEFAULT '2014-01-19'

+2

Да, но нужно ли менять значение по умолчанию с каждым днем? Я просто хочу, чтобы он автоматически заполнил поле для меня текущей датой. –

+1

Похоже, эта функциональность возможна только с использованием типа данных timestamp: http://stackoverflow.com/questions/5818423/set-now-as-default-value-for-datetime-datatype –

15

Set Default в запросе MySQL

CURRENT_TIMESTAMP 
1

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

now()

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

т.е.

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

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

enter image description here

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

2015-12-11 07:50:47

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

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

Готов к скале!

enter image description here

0

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

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

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

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

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

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

Вот как:
Пример в CREATE TABLE заявление:

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

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

Смежные вопросы