上游调我们接口送了个日期字段,我们对该字段不会做任何处理,直接拿来插表。上送日期是2024-02-29,日志内打印的插入sql也是2024-02-29,为什么数据库实际插入是2024-03-01
有可能是时区不对,可以看一下数数据库时间
输入select now();
来查看mysql时间,如果时间和你本地当前时间一致,说明mysql的时间没有问题
那么问题就出现在java时间上
将jdbc url参数修改成serverTimezone=Asia/Shanghai试试.
引用 皆我百晓生 小程序回复内容作答:
这个问题可能是由于数据库的日期处理规则不同导致的。在大部分数据库中,闰年的2月份是有29天的,但是闰年的闰月是指该年份中存在一个额外的月份,该月份通常放在农历的前面或后面。因此,在某些数据库中,插入闰月的日期可能会进行调整,确保日期的正确性。
根据您提供的情况,上游接口给出的日期是2024-02-29,可能是指2024年的闰月。如果数据库的日期处理规则是对闰月进行调整,则实际插入的日期将会是2024-03-01,确保日期的正确性。
为了进一步确认问题,您可以查看数据库的日期处理规则或者咨询数据库管理员。如果数据库确实是按照闰月进行调整的规则处理日期,那么您的情况就是正常的。如果您想要插入原始的闰月日期,您可能需要在插入之前对日期进行处理,将闰月日期转换为正常日期。
【相关推荐】
win+r 键,打开cmd
连接自己得数据库,输入命令
学生表:t_student
create table t_student (
-> id int(16) not null primary key,
-> sname varchar(255) not null,
-> sex varchar(255),
-> age int(16),
-> phone varchar(255),
-> address varchar(255),
-> cid int(255),
-> remark varchar(255)
-> );
班级表:t_class
create table t_class (
-> id int(11) not null primary key,
-> cname varchar(255),
-> teacher varchar(255),
-> remark varchar(255)
-> );
成绩表:t_grade
create table t_grade (
-> id int(11) not null primary key,
-> sid int(11),
-> chinese varchar(255),
-> math varchar(255),
-> english varchar(255),
-> remark varchar(255)
-> );