闰年闰月数据库日期插入处理异常

上游调我们接口送了个日期字段,我们对该字段不会做任何处理,直接拿来插表。上送日期是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,确保日期的正确性。

为了进一步确认问题,您可以查看数据库的日期处理规则或者咨询数据库管理员。如果数据库确实是按照闰月进行调整的规则处理日期,那么您的情况就是正常的。如果您想要插入原始的闰月日期,您可能需要在插入之前对日期进行处理,将闰月日期转换为正常日期。

【相关推荐】



  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7586466
  • 你也可以参考下这篇文章:用一条sql语句判断两个日期是否处于同一月份!
  • 除此之外, 这篇博客: 2020-09-09中的 1、用SQL语句创建以下三张表,要求字段属性要求如图所示。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    win+r 键,打开cmd
    连接自己得数据库,输入命令

    学生表:t_student
    1

    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

    2

    create table t_class (
    -> id int(11) not null primary key,
    -> cname varchar(255),
    -> teacher varchar(255),
    -> remark varchar(255)
    -> );

    成绩表:t_grade

    3

    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)
    -> );


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^