insert into ic_xx ( data_type, dept_id, mail_count, mail_amount, scan_amount, scan_rate_lp, year, week, begin_date, end_date, user_id ) values ( 2, 113, 1054, 2.61, 2.58, 0.90570593962999, 2021, 23, '2021-05-31 00:00:00.0', '2021-06-06 23:59:59.4', 1 );
insert into ic_xx ( data_type, dept_id, mail_count, mail_amount, scan_amount, scan_rate_lp, year, week, begin_date, end_date, user_id ) values ( 2, 113, 1054, 2.61, 2.58, 0.90570593962999, 2021, 23, '2021-05-31 00:00:00.0', '2021-06-06 23:59:59.5', 1 );
两个sql语句主要区别就是时间。在mysql的表设计为Date类型,
如果参数是或小于2021-06-06 23:59:59.4 (2021-06-06 23:59:59.499 ) 则数据库存的值2021-06-06
如果参数是或大于2021-06-06 23:59:59.5 (或2021-06-06 23:59:59.500 ) 则数据库存的值为2021-06-07。
显然,mysql的C底层实现过程进行四舍五入的精度处理。
因此,在处理时间插入时,特别用hutool工具取得的极限时间值时,在插入时需特别注意,容易翻车。

博客指出两个SQL语句主要区别在于时间。MySQL表设计为Date类型时,参数小于2021 - 06 - 06 23:59:59.4存为2021 - 06 - 06,大于等于2021 - 06 - 06 23:59:59.5存为2021 - 06 - 07,表明其C底层实现有四舍五入精度处理,提醒处理时间插入时要注意。
5030

被折叠的 条评论
为什么被折叠?



