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天提醒还款信息.