
问题合同结束时间应为当年的最后一天为什么显示的是2027年原因老代码用的类型是Date数据库用的类型是dateTimejava.util.Date 内部就是一个 long类型的变量存的是 自1970-01-01 00:00:00 GMT 以来的毫秒数(可以见下图是以毫秒值的形式进行存储)库里接收到毫秒值四舍五入大于500的会自动进位到2027年1月1日如2026年23点59分59秒501或者999毫秒Date startTime new Date(); Calendar calendar Calendar.getInstance(); calendar.setTime(startTime); calendar.set(Calendar.MONTH, Calendar.DECEMBER); calendar.set(Calendar.DAY_OF_MONTH, 31); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); Date endTime calendar.getTime();解决方案显示指定精度后三位支持毫秒解决跨年问题ALTER TABLE t_contractMODIFY COLUMN end_time DATETIME(3) DEFAULT NULL COMMENT 合同终止日期;原为解决后:证明四舍五入类型是datetime的前提下TABLE t_contract MODIFY COLUMN end_time DATETIME;