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

Eva*_*HZY 1 mysql sql timestamp mysql-error-1064 sql-insert

我有一个这样的表:

    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)

);
Run Code Online (Sandbox Code Playgroud)

插入这条新记录时没有错误:

insert into event (name, start_datetime, end_datetime)
value
('myName', '2020-01-05 18:00:00', '2020-01-07 23:59:00')
;
Run Code Online (Sandbox Code Playgroud)

但这条记录抛出错误:

insert into event (name, start_datetime, end_datetime)
value
('myName', '2045-01-05 18:00:00', '2045-01-07 23:59:00')
;
Run Code Online (Sandbox Code Playgroud)

错误是

Data truncation: Incorrect datetime value: '2045-01-05 18:00:00' for column 'start_datetime' at row 1
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?非常感谢!

更新:在 MySql 文档中发现:TIMESTAMP 数据类型用于包含日期和时间部分的值。TIMESTAMP 的范围为“1970-01-01 00:00:01”UTC 到“2038-01-19 03:14:07”UTC。

所以我猜2045年太遥远了……

nbk*_*nbk 10

TIMESTAMP仅适用于

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

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

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

欲了解更多信息,请参阅手册