mysql localdatetime_使用LocalDateTime遇到的问题

时间:2025-02-19 10:36:20

简单记录一下。

mysql数据库,字段类型datetime,代码用用()来获取当前时间并存储。

坑:

()获取到的时间包含年、月、日、时、分、秒、纳秒,由于数据库是datetime,只到秒,入库的时候会根据纳秒进行四舍五入。例如()拿到的是019-11-20T21:08:13.723,但是入库的时候会是2019-11-20 21:08:14,在极端情况下会出现问题,这个要看具体场景。

解决办法很简单:

通过LocalDateTime的withNano()方法,直接舍弃纳秒。

public static void main(String[] args) {

LocalDateTime now = ();

(now);

((0));

}

输出:

2019-11-20T21:11:03.752

2019-11-20T21:11:03

题外:

// LocalDateTime由LocalDate「日期部分」和LocalTime「时间部分」组成

private LocalDateTime(LocalDate date, LocalTime time) {

= date;

= time;

}

// 日期部分:年、月、日

private LocalDate(int year, int month, int dayOfMonth) {

= year;

= (short) month;

= (short) dayOfMonth;

}

// 时间部分:时、分、秒、纳秒

private LocalTime(int hour, int minute, int second, int nanoOfSecond) {

= (byte) hour;

= (byte) minute;

= (byte) second;

= nanoOfSecond;

}