#mysql #sql #timestamp #sql-insert #mysql-error-1064
#mysql #sql #временная метка #sql-вставка #mysql-ошибка-1064
Вопрос:
У меня есть таблица, подобная этой:
CREATE TABLE event (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
start_datetime TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01',
end_datetime TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:01',
description TEXT,
created TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
modified TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)
);
При вставке этой новой записи ошибки нет:
insert into event (name, start_datetime, end_datetime)
value
('myName', '2020-01-05 18:00:00', '2020-01-07 23:59:00')
;
Но эта запись выдает ошибку:
insert into event (name, start_datetime, end_datetime)
value
('myName', '2045-01-05 18:00:00', '2045-01-07 23:59:00')
;
Ошибка заключается в
Data truncation: Incorrect datetime value: '2045-01-05 18:00:00' for column 'start_datetime' at row 1
Кто-нибудь может, пожалуйста, помочь?
Большое спасибо!
Обновлено: найдено это в документе MySQL: Тип данных TIMESTAMP используется для значений, которые содержат как части даты, так и времени. ВРЕМЕННАЯ МЕТКА имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC.
Итак, я думаю, что 2045 год слишком далеко … …
Комментарии:
1. Итак, вы нашли ответ самостоятельно. Вы могли бы также опубликовать это как ответ, поскольку вы были фактически первыми!
Ответ №1:
TIMESTAMP
используется только для
Тип данных TIMESTAMP используется для значений, которые содержат как части даты, так и времени. ВРЕМЕННАЯ МЕТКА имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC.
Для «больших» дат переключитесь на DATETIME
диапазон значений даты и времени составляет от ‘1000-01-01 00:00:00.000000’ до ‘9999-12-31 23:59:59.999999’
Для получения дополнительной информации обратитесь к руководству
Ответ №2:
Значение временной МЕТКИ имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC.
Проблема в том, что для TIMESTAMP
столбца не разрешен 2045 год.
Ответ №3:
Отвечая на мой собственный (как в обновленном разделе исходного вопроса), я обнаружил это в документе MySQL: Тип данных TIMESTAMP используется для значений, которые содержат как части даты, так и времени. ВРЕМЕННАЯ МЕТКА имеет диапазон от ‘1970-01-01 00:00:01’ UTC до ‘2038-01-19 03:14:07’ UTC.