实操结果:Java与MySQL时间类型对照表

                

先上结论

不论数据库的时间类型是什么(除了year),在Java中一律使用 java.time.LocalDateTime即可。

注意事项

1.实操时MySQL版本为8.0.20。
2.上表中右列的Java类型数据均可对应入库为左列的MySQL类型数据。
3.采坑:MySQL时区默认设置为UTC导致Java、MySQL显示的时间不一致(解决方案)。

细节问题

1.MySQL中time类型只会存储时间,不会存储日期。因此读取到的Java类日期会显示为1970-01-01。
2.MySQL中timestamp类型会存储日期、时间,可以和Java类无缝转换。
3.MySQL中date类型只会存储日期,不会存储时间。因此读取到的Java类时间会显示为00:00 (比较奇怪的是Instant类会显示为16:00)。
4.MySQL中datetime类型会存储日期、时间,可以和Java类无缝转换。
5.MySQL中year类型只会存储年份,不会存储其他日期相关数据。读取为Integer类型时显示4位10进制数的年份,但是读取为String类型时,会显示格式化后的年月日(有点奇怪)。

例:mysql —— 2020         Integer —— 2020         String —— "2020-01-01"

6.当插入MySQL中year类型数据为两位数时:

00~69  会转换为2000~2069之间       例:Integer ——  58       mysql —— 2058
70~99  会转换为1970~1999之间       例:String  —— "85"      mysql —— 1985