Java MYSQL时间戳与millieconds问题

问题描述

我正在使用MysqL,列类型为TimeStamp。我无法存储或检索毫秒。

有什么需要帮助的吗?谢谢!

public static Date getBeginAndEndTime(String time) {        
    DateTimeFormatter format = DateTimeFormatter.ofPattern("HHmmssSSS");    
    LocalTime lt = LocalTime.parse(time,format);       
return Timestamp.valueOf(lt.atDate(LocalDate.Now()));
}

例如:时间值原为“ 140833222”,当我存储在数据库中时,它看起来像“ 2020-08-26 14:08:33”缺少最后一个毫秒“ 222”。

我需要存储和检索包括毫秒在内的时间。

解决方法

您应该使用数据类型BIGINT,因为它可以存储8个字节。 DATE字段通常仅用于Date和DateTime实现,例如LocalDateTime。由于您使用的是LocalDate,随后使用的是LocalTime,因此最好只使用DATE类型。您的方法有效地变成了

public static Date getBeginAndEndTime(String time) {     
    // cache this,it's a thread-safe object
    DateTimeFormatter format = DateTimeFormatter.ofPattern("HHmmssSSS"); 
     
    return LocalTime.parse(time,format).atDate(LocalDate.now()));
}