Синтаксическая ошибка при использовании 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
колонны, в частности.)