MySql TIMESTAMP错误:数据截断:不正确的日期时间值

问题描述

我有一张这样的桌子:

    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,'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数据类型用于包含日期和时间部分的值。 TIMESTAMP的UTC范围是“ 1970-01-01 00:00:01”到UTC的范围是“ 2038-01-19 03:14:07”。

所以我猜2045太遥远了... ...

解决方法

仅适用于tmestamp

TIMESTAMP数据类型用于包含日期和时间部分的值。 TIMESTAMP的UTC范围是“ 1970-01-01 00:00:01”到UTC的范围是“ 2038-01-19 03:14:07”。

对于“大日期”,请切换到DATETIME

DATETIME值的范围是“ 1000-01-01 00:00:00.000000”到“ 9999-12-31 23:59:59.999999”

有关更多信息,请咨询manual

,

MySQL documentation

TIMESTAMP值的范围是UTC的“ 1970-01-01 00:00:01”到UTC的“ 2038-01-19 03:14:07”。

问题是TIMESTAMP列不允许使用2045年。

,

回答我自己的问题(如原始问题的更新部分) 在MySql文档中发现此问题:TIMESTAMP数据类型用于包含日期和时间部分的值。 TIMESTAMP的UTC范围是“ 1970-01-01 00:00:01”到UTC的范围是“ 2038-01-19 03:14:07”。