Spring boot 整合Spring data neo4j時,在持久化接口的時候,拋出異常,原來是使用的sql語句後的";"的問題.
或者直接添加空格..
該sql就會拋出上面的錯誤,原因就是sql使用時,?1和後面的分後連接在了一起,沒有起具體的作用.
直接把sql後面的分號拿掉就不會有問題了;
TIPS:
此時使用的是mysql數據庫
業務需求,查詢出當天生日的客戶的信息;
此時,以前的想法是查詢出所有的數據,然後比對當天的生日的客戶.然後取出來想用的數據;
其實mysql還有一個DAY()和MONTH()函數
select * from customer where MONTH(birthday) = MONTH(NOW()) and DAY(birthday) = DAY(NOW())
查詢客戶中的月份等於今天對應的月份 AND 天數和今天是相等的情況.即是月份和日期相等,即客戶是今天的生日;
還有一個業務是查詢,客戶的三天後是還款日的客戶信息;
這樣一想,好像只要看day的情況就可以了...
但是這裏有一個情況是,三天後是還款日,即可能是本月,也可能是次月(即1號還款日和31號還款日)是不同....
所以,噹噹天日數和三天後的日期進行比較.如果是小於三天後的日期,則是本月;否則是次月;比較繞...哈哈哈
public void getDayBefor() {
long currentTimeMillis = System.currentTimeMillis();
long period = (long) (days * 86400000);
Date d = new Date(period + currentTimeMillis);
Calendar calendar = Calendar.getInstance();
int now = calendar.get(Calendar.DAY_OF_MONTH);
calendar.setTime(d);
day = calendar.get(Calendar.DAY_OF_MONTH);
if (now > day){
next = "次";
}else {
next = "本";
}
logger.debug(days + "天后的日期是:" + day+"日,選擇月份是:"+next);
}
這樣的話,先獲得本月的第幾天(即日數),再看三天後的日期,這裏使用了long值進行換算,相對偷了個懶,其實用calendar也可以..
然後比較當前的日數和三天後的日數的大小,判斷是本月還是次月;
當然這個days不會大於28,因爲如果遇到2月份這種情況,就跨月了....
業務也不允許提前28天提醒還款信息.