写了一个小工具,用来统计部门的问题解决情况.
期间使用到了时间的比较查询.
开始的结论是始终第一天跟最后一天数据消失。
排查之后,问题得到解决. 时间问题导致的。
之前是这个
/** * 获取星期的第一天 * 星期一 * @param date * @return */ public static Date getWeekStar(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMinimum(Calendar.DAY_OF_WEEK)); calendar.add(Calendar.DATE, 1); return calendar.getTime(); }/** * 获取指定日期月初 * @param date * @return */ public static Date getMonthStar(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return calendar.getTime(); }
修改正之后
/** * 获取星期的第一天 * 星期一 * @param date * @return */ public static Date getWeekStar(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMinimum(Calendar.DAY_OF_WEEK)); calendar.add(Calendar.DATE, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); }/** * 获取指定日期月初 * @param date * @return */ public static Date getMonthStar(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); }
其中:
calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0);
如果你的数据库存储的是时间格式.上面必须添加。
因为时间默认比较会到毫秒.
数据存储的格式刚好是:yyyy-mm-dd HH:mm
毫秒存储为0,比较的有时全比较.导致数据出不来.
虽然是个小坑,但是也花了时间来弄的,记录下。