HQL与SQL关于DATEDIFF的使用工作备份

1.       select o.id from insuranceorder as o where  (select datediff(o.expireDate,o.buyDate)<1460 ) and  (select datediff(o.expireDate,o.buyDate)>=1095)

 

2.       select v.id from vehicleorder as v where v.insuranceOrderId  in(select o.id from insuranceorder as o where  (select datediff(o.expireDate,o.buyDate)<1460 ) and  (select datediff(o.expireDate,o.buyDate)>=0))

 

3.       select count(*) from vs_mortgage_application as m where m.mortgageCompany = ' 中国银行广州白云支行 ' and m.vehicleOrderId  in (select v.id from vehicleorder as v where v.insuranceOrderId  in(select o.id from insuranceorder as o where o.companyName = ' 中国太平洋财产保险股份有限公司广东分公司 ' and (select datediff(o.expireDate,o.buyDate)<1460 ) and  (select datediff(o.expireDate,o.buyDate)>=0)))

 

3 是正确得到的 SQL 语句

 

HQL 中不支持 datediff ,故以下方法作废,复制于此,以作备份

 

 

 

 

public List findInsuranceOrder(String mortgageCompany, String companyName, int start,int end) {

        return em.createQuery("select object(o) from VsMortgageApplication as o " +
                              "where o.mortgageCompany like :mortgageCompany " +
                              "and o.vehicleOrder.insuranceOrder.companyName like :companyName " +
                              "and (select datediff(o.vehicleOrder.insuranceOrder.expireDate,o.vehicleOrder.insuranceOrder.buyDate)>= :start)" +
                              "and (select datediff(o.vehicleOrder.insuranceOrder.expireDate,o.vehicleOrder.insuranceOrder.buyDate)< :end)").setParameter("end", end).setParameter("start", start).setParameter("mortgageCompany", "%" + mortgageCompany + "%").setParameter("companyName", "%" + companyName + "%").getResultList();

    }

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值