一、问题重现:

 

二、问题分析:

1)datetime 字段默认长度为0,MySQL在插入时间的时候,会对毫秒数值进行四舍五入(即大于500毫秒的+1秒)。

2)如果datetime设置字段长度为3,即可显示毫秒数,不再进行四舍五入和+1秒。

 

三、解决方案:

1)datetime设置长度为3

2)服务端new Date()的时候,把毫秒数值设置为0。

public void setReceiveTime(Date receiveTime) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(receiveTime);
    calendar.set(Calendar.MILLISECOND, 0);
    this.receiveTime = calendar.getTime();
}