MySQL5.7 time_存储范围错误
案发现场
通过sql查询出time类型的数据,转为java.time.Time类型时出现异常。发现出现了出现了 24:0:0,这种不符合预期的值,超出了 Time 类型的存储范围,由此抛出异常。
产生原因
通过官方文档查询得知,Time 的存储范围非预期的 0 - 24 小时,在java中时间23:59:59.995 带有精度的时间,在存储到MySQL后,由于未设置time类型的精度,导致向上加了1,变为 24:0:0,然后就悲剧了。
解决办法
-
设置time精度,范围是0-6,默认是0.
-
java 处理,将所有精度抹去,直接设置为0.
反思
-
细节了解不够到位,对于一个东西的使用认知还不够全面,带有主观思想。