Синтаксическая ошибка при использовании 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 достаточно ясна по этому вопросу. Вы можете установить значение по умолчанию для DATETIME или же TIMESTAMP столбец, но не на дату:

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

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

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

Другие вопросы по тегам