mysql 根據年,月,日,小時,分別查詢對應時間的數量
阿新 • • 發佈:2018-11-15
給自己記錄下
實現了選擇年分佈時,報表按照12個月來統計每個月的數量
選擇月分佈,報表按照月的天數來統計每天的數量
選擇日分佈,報表按照24小時來統計每小時的數量
年 :
<select id="year" parameterType="map" resultMap="BaseResultMap"> SELECT COUNT(*) AS count , DATE_FORMAT(r.entryTime, '%m') AS laber FROM tab_fangke_visit_person r WHERE 1=1 AND DATE_FORMAT(r.entryTime, '%Y') = #{value} <if test="endtime != null and endtime.trim() != ''"> AND r.outTime is not null </if> GROUP BY DATE_FORMAT(r.entryTime, '%m') </select>
月:
<select id="month" parameterType="map" resultMap="BaseResultMap"> SELECT COUNT(*) AS count, DATE_FORMAT(r.entryTime, '%d') AS laber FROM tab_fangke_visit_person r WHERE 1=1 AND DATE_FORMAT(r.entryTime, '%Y-%m') = #{value} <if test="endtime != null and endtime.trim() != ''"> AND r.outTime is not null </if> GROUP BY DATE_FORMAT(r.entryTime, '%d') </select>
日 :
<select id="day" parameterType="map" resultMap="BaseResultMap"> SELECT HOUR(r.entryTime) AS laber, COUNT(*) AS count FROM tab_fangke_visit_person r WHERE 1=1 AND DATE_FORMAT(r.entryTime, '%Y-%m-%d') = #{value} <if test="endtime != null and endtime.trim() != ''"> AND r.outTime is not null </if> GROUP BY HOUR(r.entryTime) </select>
根據年月得出月有多少天
// 獲取某月有多少天
public int getMonthLastDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
補足缺失的日期
// 補足缺失的日期,並順序排序。
public List<CountValue> setValue(List<CountValue> arr, List<String> month) {
for (String mon : month) {
CountValue val = new CountValue(0, mon);
if (!arr.contains(val)) {
arr.add(val);
}
}
Collections.sort(arr, new Comparator<CountValue>() {
@Override
public int compare(CountValue o1, CountValue o2) {
return o1.getLaber().compareTo(o2.getLaber());
}
});
return arr;
}
CountValue類的equst方法:
public boolean equals(Object obj) {
if (obj instanceof CountValue) {
CountValue p = (CountValue) obj;
String key = p.getLaber();
if (null != key && key.equals(this.laber)) {
return true;
} else {
return false;
}
}
return false;
}
前臺datetimepicker控制元件的年,月,日配置:
function initYear(){
$('#year').datetimepicker({
startView: 'decade',
minView: "decade",
format: 'yyyy',
maxViewMode: 2,
minViewMode:2,
autoclose: true,
language: 'zh-CN',
}).on('changeDate',function(ev){
var year = $('#year').val();
init(year,"月份","月","year");
});
}
function initMonth(){
$('#month').datetimepicker({
startView: 'year',
minView: "year",
format: 'yyyy-mm',
maxViewMode: 2,
minViewMode:2,
autoclose: true,
language: 'zh-CN',
}).on('changeDate',function(ev){
var year = $('#month').val();
init(year,"日","","month");
});
}
function initDay(){
$('#day').datetimepicker({
minView: "month", //選擇日期後,不會再跳轉去選擇時分秒
language: 'zh-CN',
format: 'yyyy-mm-dd',
todayBtn: 1,
autoclose: 1,
}).on('changeDate',function(ev){
var year = $('#day').val();
init(year,"小時","","day");
});
}