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

时间:2020-08-28 21:41:55

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

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

3 个答案:

答案 0 :(得分:2)

仅适用于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

答案 1 :(得分:1)

MySQL documentation

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

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

答案 2 :(得分:1)

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

相关问题