Ошибка метки ВРЕМЕНИ MySQL: Усечение данных: неверное значение datetime

#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:

Из документации MySQL

Значение временной МЕТКИ имеет диапазон от ‘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.