關於時間差查詢的一個小技巧
阿新 • • 發佈:2017-11-03
log sele 日期 where integer 時間差 時間 logs sql
求2個時間差,通常用datediff函數:DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 參數是合法的日期表達式。
datepart 參數可以是小時、分、秒等
但是sql裏datediff是三個參數,mySql裏只支持2個參數,所以對於mysql來說,處理時間差的查詢就不是那麽容易。
但是可以換一個思路:比如要查詢12小時之前的數據,我們可以利用:現在的時間 - 12小時,得到提前12小時的時間,然後查詢在此時間之前的數據即可。
MySql:SELECT * from cems_deviceinfo where lastActiveTime < DATE_SUB(NOW(),INTERVAL 12 HOUR)
需求解決的代碼:
@Override
public int queryUnUseDevice(Integer unUsedTime) {
String hql = "SELECT count(*) from cems_deviceinfo where lastActiveTime < DATE_SUB(NOW(),INTERVAL :unUsedTime HOUR)";
return Integer.parseInt(getSession().createSQLQuery(hql).setParameter("unUsedTime", unUsedTime).uniqueResult().toString());
}
關於時間差查詢的一個小技巧