因爲統計需要
需要在日表(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月份創建的,也可以按照時間區間去查,但是需要上面那樣,根據指定時間去篩選對應月份的記錄。
數據量小的時候可以用函數,上千萬的就不推薦了。