美文网首页
Mysql自动加1秒的问题

Mysql自动加1秒的问题

作者: 冰__羽 | 来源:发表于2020-03-23 16:05 被阅读0次

我们需要根据日期入参,保存数据库该日期的当天最后时刻。
如2020-03-20,那么我们希望插入数据库的值为2020-03-20 23:59:59,下面是工具类,希望调用getDayStart()方法达成我们的目标。

public class PointTime {

    Date rawDate;

    public PointTime(Date rawDate) {
        super();
        this.rawDate = rawDate;
    }

    public Date getDayStart() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(rawDate);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    public Date getDayEnd() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(rawDate);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }
}

程序跑出来的结果没有问题,但是当插入数据库时,却变成了2020-03-21 00:00:00,数据库类型字段是datatime。

原因是Mysql会进行数据转换,它没有毫秒格式,所以当毫秒数>=500时,会进位。[Mysql官方解释]https://dev.mysql.com/doc/refman/5.6/en/date-and-time-type-conversion.html

时间转换

我们把毫秒设置成0就行了。

calendar.set(Calendar.MILLISECOND, 0);
 

相关文章

网友评论

      本文标题:Mysql自动加1秒的问题

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