美文网首页
mysql数据库存储时间字段跟存入的不一致

mysql数据库存储时间字段跟存入的不一致

作者: java_飞 | 来源:发表于2020-09-15 15:35 被阅读0次

    之前在处理公司结算账单的问题时,发现了很多诡异的问题,有:
    1.结算单重复生成;
    2.更改结算周期后,未结算的订单无法结算,
    3.结算周期内的账单跟实际金额不符;
    4.结算胀期时间跟传入的时间对不上,导致临界值订单归属不对;
    等等。。。。

    我这里来阐述下最后的问题,其余都是业务上的问题导致的错误;
    问题描述:
    财务反馈到我这边的问题时,发现实际生成的账单金额,与账单详情里面的订单金额对不上,然后我查看记录发现详情里面的很多订单是0点0分0秒的,但是我之前有更改过这个时间,然后我再去查看账期时间,以及查看xxl-job上的日志,发现我实际传入的时间是23:59:59,但是账单记录里面的账期却是第二天的00:00:00,所以查询的时候将第二天的金额查出来了,但是实际结算的时候没有结算进去;
    针对这个问题,我去进行本地测试,我是利用jdk1.8的LocalDateTime类来获取当天时间的最大值,然后本地打印了下发现,是没有问题的,都是正确的,然后我进行入库测试,发现者时候就不对了,我实际传入的是23:59:59:999,但是入库后存储的值是第二天的00:00:00,问题是定位到了,但是为什么会这样呢;不懂就问百度,肯定不止是我一个人遇到这个问题,一查果然一大把,原因是:mysql这边只存精确到秒的,当传入的毫秒数大于500时,会自动+1秒,那么问题找到了;

    解决方法:

    1.进行结算的时候,传入的时间,去除毫秒,直接设置为0;

    2.更改字段类型,用long来保存时间戳,精确到毫秒;

    我这里结合项目选择的是第一种方案,因为,第二种方案涉及的改动比较大;

    有其他问题,欢迎交流;

    相关文章

      网友评论

          本文标题:mysql数据库存储时间字段跟存入的不一致

          本文链接:https://www.haomeiwen.com/subject/jwdfyktx.html