赞
踩
团队规定:服务端对外接口无论是接收还是返回,对于时间都是要时间戳,且毫秒格式,内部数据库存储建议BIGINT,而有人用了DateTime,导致了线上一个对接业务出现了时间戳校验失败的BUG。
实现了幂等
),传了一个毫秒级别的时间戳和其他业务参数,如1538284559999
(北京时间2018-09-30 13:15:59.999),;1538284559999
,返回错误,而非期望的幂等成功。经过查看日志等工作,发现mysql在存储1538284559999
时进行了四舍五入,成了2018-09-30 13:16:00
,系统再次拿出该时间戳时就成了1538284560000
,这!根本没法对比啊!
为什么呢?
为什么mysql会对毫米级时间戳进行四舍五入呢?正常来说,无论是DateTime还是Timestamp,都可以存储毫秒级别的时间,于是搜索了一番,查找到一个博客如下:
将数据库的Datetime修改为Datetime(3)即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。