插入连续递增的日期数据报错,mysql运行正常

DROP TABLE IF EXISTS num;
CREATE TABLE num (
 i int default NULL
)ENGINE=Innodb DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO num(i) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

DROP TABLE IF EXISTS calendar;
create table calendar(
	id int NOT NULL AUTO_INCREMENT,
	date date DEFAULT null,
	PRIMARY KEY (id),
	UNIQUE KEY uk_calendar_date (date) USING BTREE
)ENGINE=Innodb DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT INTO calendar(date) SELECT 
	ADDDATE(
		DATE_FORMAT(
			'1970-01-01','%Y-%m-%d'
			),
			numList.id
	) as date
	FROM ( 
		SELECT n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000 as id FROM num n1 
		CROSS JOIN num n10
		CROSS JOIN num n100
		CROSS JOIN num n1000
	) as numList;
	

v5.3.0执行正常~

image

我5.3执行不成功
image

奇怪,我这个是用TiDB云数据库测试的,查询对应日期也没问题。

你的sql_mode是啥?

有没有可能和时区有关系,tidb云数据库的时区不是东八区应该

SELECT @@global.time_zone, @@session.time_zone;

看来还真有可能是时区问题
image

我这4.0.14执行也正常,您这单select是什么样的,不insert看是什么结果

看上面的回复记录,目前看和系统时区有关系,我这是东八区,直接insert 是没有问题的

你可以在tidb中采用session级别设置时区的方法观测下,看看utc是否报错,另外可以看下tidb中select的查询结果,感觉可能显示不对

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。