前臺用時間查詢記錄的問題
遇到一個問題,這裡總結一下:
我做的異常日誌模組,有根據時間查詢日誌記錄的問題,一開始我考慮日誌一般都是具體到時分秒的,查詢時時間選擇器的元件用日期加時間的比較合適,後來需求說,一般不管你後臺存的資料是不是具體到時分秒,前臺查詢用的都是日期,於是我將日期時間選擇器改成了日期選擇器,這裡我們用的前端框架是layui。
然後就出現了一個問題,時間範圍一般是2018-08-23 ~ 2018-08-25形式,當前後選擇的是同一天
(比如2018-08-23 ~ 2018-08-23)時,本來是想查詢23號的資料,但是卻顯示沒有資料。
原因在於,日期的選擇時間往往是從00:00:00開始的,所以沒有查出來資料合乎情理。
為了達到前後選擇同一天可以查詢出資料的結果,需要在後臺進行處理(是經過別人指點的,哈哈)
處理方法,給前面的時間拼接 00:00:00,給後面的時間拼接 23:59:59,這樣問題就解決了
這裡附上我的serviceImp層的程式碼,注意拼接時的空格問題
public Map<String, Object> findByPage(Integer page, Integer limit, InterfaceInvokeLogVo interfaceInvokeLogVo) {
Date beginInvokeStartTime = null; // 呼叫開始時間範圍的起始時間
Date endInvokeStartTime = null; // 呼叫開始時間範圍的結束時間
String beginInvokeStartTimeStr = "";
String endInvokeStartTimeStr = "";
PageHelper.startPage(page, limit);
// 前臺傳過來的時間為2018-08-01 ~ 2018-08-02
// 16:00:00,開始時間的後面有一個空格,結束時間的前面有一個空格
String invokeStartTimeRangStr = interfaceInvokeLogVo.getInvokeStartTime();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss ");
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat(" yyyy-MM-dd hh:mm:ss");
if (invokeStartTimeRangStr != null && !invokeStartTimeRangStr.equals("")) {
beginCreateDateStr = (createDateRangStr.split("~"))[0] + "00:00:00 ";
endCreateDateStr = (createDateRangStr.split("~"))[1] + " 23:59:59";
try {
beginInvokeStartTime = simpleDateFormat1.parse(beginInvokeStartTimeStr);
endInvokeStartTime = simpleDateFormat2.parse(endInvokeStartTimeStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
interfaceInvokeLogVo.setBeginInvokeStartTime(beginInvokeStartTime);
interfaceInvokeLogVo.setEndInvokeStartTime(endInvokeStartTime);
Page<SysErrorLogVo> interfaceInvokeLogs = interfaceInvokeLogMapper.selectPageRecord(interfaceInvokeLogVo);
return ResultUtil.put(ConstantUtil.REQUEST_SUCCESS, interfaceInvokeLogs.getTotal(), "",
interfaceInvokeLogs.getResult());
}