#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.
Чтобы решить проблему, я изменил столбец с МЕТКИ ВРЕМЕНИ на ДАТУ и ВРЕМЯ.