Должно работать следующее:
ALTER TABLE tips MODIFY COLUMN year YEAR(4) NOT NULL DEFAULT CURRENT_TIMESTAMP
Для получения дополнительной информации см. Тип данных года .
Итак, я проверил это, как только получил доступ, и он не работает. Как отметил другой автор, CURRENT_TIMESTAMP работает только с типом данных TIMESTAMP .
Есть ли конкретная проблема с сохранением полной отметки времени, а затем с использованием только года в вашем коде? Если нет, то я бы порекомендовал сохранить это значение как метку времени.
Другой вариант - создать триггер :
CREATE TRIGGER example_trigger AFTER INSERT ON tips
FOR EACH ROW BEGIN
UPDATE tips SET year = YEAR(NOW()) WHERE tip_id = NEW.tip_id
END;
В противном случае присвойте это значение инструкции INSERT из вашего кода.
Лучшее решение в вашем случае будет полностью зависеть от обстоятельств, связанных с вашим конкретным приложением.