3
回答
Hibernate的HQL语句对数据库的时间比较查询
华为云数据库免费试用   

各位大神,我只想用hql语句从数据库查出来比当前时间小的数据,下面的三个hql语句都写过了,都不行,求指教:

select *   from  AMDCoupons tc where tc.endDate > ' 2014-07-31 17:18:06' order by tc.couponsId desc 

select *   from  AMDCoupons tc where tc.endDate >  2014-07-31 17:18:06  order by tc.couponsId desc 

select *   from  AMDCoupons tc where tc.endDate >  to_date( 2014-07-31 17:18:06,yyyy-MM-dd HH:mm:ss)  order by tc.couponsId desc 

举报
默默积极
发帖于4年前 3回/9K+阅
共有3个答案 最后回答: 4年前
to_char(to_date( tc.endDate ,' yyyy-MM-dd HH24:mi:ss'),' yyyy-MM-dd HH24:mi:ss')>' 2014-07-31 17:18:06'
--- 共有 1 条评论 ---
默默积极其实思路是对的,就是把字段统一类型来比较,网上好多都是这么写的,不知道是否亲自验证过,可能是Orcal的数据库没问题,我的MySql数据库的Sql语句是这么写的: and tc.endDate < str_to_date('"); hql.append(endDate); hql.append("','%Y-%m-%d %H:%i:%s') "); 4年前 回复

这样写hql查出来才奇怪了

hql不能直接用字符串拼接特殊类型的字段 比如日期什么的,要用占位符才行

Query q = XXX.createQuery("from  AMDCoupons tc where tc.endDate > :endate order by tc.couponsId desc ")
q.setDate("endate",这里是传入的时间类型);



顶部