因为统计需要
需要在日表(YYYY-MM-DD hh:mm:ss)这种2019-08-16 18:22:31
以及月表(YYYYMM) .
需要根据传入指定月份,获取该月的开始时间、结束时间。
以及按月统计日表等。
//根据传入日期计算改月最后一天:格式23:59:59
public static Date getlastDayDateOfMonth(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 59);
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 0);
return cal.getTime();
}
//根据传入日期计算月初第一天:时分秒为0
public static Date getFirstDayDateOfMonth(final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DAY_OF_MONTH, last);
return cal.getTime();
}
查询指定日期上个月份:返回string的YYYYMM.
public static String getLastMonth(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为指定时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
date = calendar.getTime();
String accDate = format.format(date);
return accDate;
}
二 按月统计日表
SQL:
select * from table where DATE_FORMAT(createtime,'%Y%m')='201908'
查询所有8月份创建的,也可以按照时间区间去查,但是需要上面那样,根据指定时间去筛选对应月份的记录。
数据量小的时候可以用函数,上千万的就不推荐了。