Hibernate的HQL语句对数据库的时间比较查询

默默积极 发布于 2014/07/31 17:22
阅读 9K+
收藏 0

各位大神,我只想用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 

加载中
1
hlevel
hlevel
to_char(to_date( tc.endDate ,' yyyy-MM-dd HH24:mi:ss'),' yyyy-MM-dd HH24:mi:ss')>' 2014-07-31 17:18:06'
默默积极
默默积极
其实思路是对的,就是把字段统一类型来比较,网上好多都是这么写的,不知道是否亲自验证过,可能是Orcal的数据库没问题,我的MySql数据库的Sql语句是这么写的: and tc.endDate < str_to_date('"); hql.append(endDate); hql.append("','%Y-%m-%d %H:%i:%s') ");
0
sxgkwei
sxgkwei
endDate 字段是什么类型呢?还有想效率,先学会不写select * ....
0
调皮的XD
调皮的XD

这样写hql查出来才奇怪了

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

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



返回顶部
顶部