在做ip/pv统计中,需要对年、月、周进行统计。在设计数据库的时候java是使用java.util.Date,数据库是使用datetime。但在用hql语句对两个日期进行比较的时候,Hql语句是这样写的:select count(*) from xx where xx.logintime > ? and xx.logintime < ?,老报错,说啥类型不确定。
用QBC查询应该不会出问题,但现在我需要的是统计,QBC满足不了要求,反复试了一下,终于发现在hql中使用命名参数就可以解决这个问题了。Hql应该这样写:select count(*) from xx where xx.logintime > :starttime and xx.logintime < :lasttime。
怪异的是就算用了命名参数绑定,但也不需要在绑定的时候设置具体类型,为什么命名参数绑定可以避开这个错误?
用QBC查询应该不会出问题,但现在我需要的是统计,QBC满足不了要求,反复试了一下,终于发现在hql中使用命名参数就可以解决这个问题了。Hql应该这样写:select count(*) from xx where xx.logintime > :starttime and xx.logintime < :lasttime。
怪异的是就算用了命名参数绑定,但也不需要在绑定的时候设置具体类型,为什么命名参数绑定可以避开这个错误?