问题
java 时间戳的精度是到秒, 有些场景需要注意
老合同结束时间是1号(23点59分59秒)
新合同开始时间是2号(0点0分0秒)、
java 应用query的时候,是匹配精度是到毫秒的(已经验证)
这样的话, 若请求参数到毫秒例如 1号(23点59分59秒100毫秒), 将新老合同都匹配不上。
解决方案:
1. mysql的精度精确到毫秒:老合同的结束时间是1号(23点59分59秒999毫秒), mysql 默认精度是到秒(到毫秒的话, 需要特殊设置)
2. 不需要透传给用户看:老合同的结束时间为是2号(0点0分0秒), 判断的时候,前开后闭的方式。这样如果透传给用户看, 用户看到会比较费解,况且2号0点的时候并不优惠。
3. 保证入参不出现毫秒(如果出现的话,特殊处理一下到秒)
图1
图2
图3
结论:
1. .毫秒(精确到毫秒) 。 如图1, 数据库到秒后面应该是秒.0 去比较的
2. :毫秒 (精确到秒,后面的毫秒直接忽略掉了)。 如图2
3. mysql 请求数据库用的是. 毫秒的形式。 如3