问题描述
我有一张这样的桌子:
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
,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”。