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,然后就悲剧了。

解决办法

  1. 设置time精度,范围是0-6,默认是0.

  2. java 处理,将所有精度抹去,直接设置为0.

反思

  1. 细节了解不够到位,对于一个东西的使用认知还不够全面,带有主观思想。