2016-05-08 3 views
0

Я пытаюсь создать таблицу, содержащую столбец, который отслеживает время, когда была вставлена ​​строка.Ошибка синтаксиса при использовании Curdate()

Этот запрос работает нормально. Создание таблицы выполняется и позволяет просматривать дату и время в столбце track_date при добавлении данных.

CREATE TABLE tracker(id int, track_date DATETIME DEFAULT NOW()); 

Предположим, мне нужно отслеживать только дату, поэтому теперь я запускаю запрос ниже, но получаю синтаксическую ошибку.

CREATE TABLE tracker_2(id int, track_date DATE DEFAULT CURDATE()); 

Не могли бы вы посоветовать.

ответ

1

MySQL documentation вполне понятен в этом вопросе. Вы можете установить значение по умолчанию для столбца DATETIME или TIMESTAMP, но не на дату:

Это означает, что, например, вы не можете установить значение по умолчанию для даты столбца будет значение функции, такие как NOW() или CURRENT_DATE. Исключением является то, что вы можете указать CURRENT_TIMESTAMP по умолчанию для TIMESTAMP и DATETIME столбцов.

Ваши варианты использования триггера или удаления компонента времени при запросе столбца.

(следует отметить, что это утверждение немного вводит в заблуждение, потому что NOW()может использоваться в качестве значения по умолчанию для DATETIME как оба вопроса и документации для уточнения. Этот пункт имеет в виду DATE колонн, в частности.)