MariaDB ER_TRUNCATED_WRONG_VALUE: неверное значение даты и времени для значений до 1970-01-01 00:00:00

#mysql #mariadb

#mysql #mariadb

Вопрос:

Это краткая версия моей схемы таблицы.

 CREATE TABLE `users` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `birthday` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
 

Я не могу вставить значения времени до 1970-01-01 00:00:00.
Я получаю эту ошибку:
ER_TRUNCATED_WRONG_VALUE: неверное значение даты и времени: ‘1964-02-19 16:57:55’ для столбца ‘день рождения.

Как я могу это исправить?

Это моя серверная версия.
введите описание изображения здесь

Комментарии:

1. ‘Тип данных TIMESTAMP используется для значений, которые содержат как части даты, так и времени. ВРЕМЕННАЯ МЕТКА имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07′ UTC.’ — dev.mysql.com/doc/refman/8.0/en/datetime.html Есть какая-то конкретная причина для использования метки времени вместо даты и времени (например)?

2. Или для дня рождения, просто date тип.

Ответ №1:

Согласно документации Mysql, ВРЕМЕННАЯ МЕТКА имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC.
Чтобы решить проблему, я изменил столбец с МЕТКИ ВРЕМЕНИ на ДАТУ и ВРЕМЯ.