论坛首页 Java企业应用论坛

hiberante 查询问题 格式化日期

浏览 9341 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-23  
如果数据库中的日期字段格式是 年月日 时分秒,那么在用hibernate 查询时,需要将这个日期格式化为 年月日,应该怎么办呢?

如果将查询条件写在hql中,比如:
String hql = "from  PojoA as a where a.createDate = ? ";
Query query = session.createQuery(hql);//不使用createSQLQuery()
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			try {
				date = sdf.parse("2008-03-06");
			} catch (ParseException e) {
				e.printStackTrace();
			}
query.setDate(0, date);
List list = query.list();

但是a.createDate的格式是 年月日 时分秒,我的意思是怎么将
hql = "from  PojoA as a where a.createDate = ? ";
中的createDate的格式转换为 年月日呢。



   发表时间:2008-04-23  
这是一个常见的sql查询问题,你可以改成用区间判断:
hql = "from  PojoA as a where a.createDate >= ? and a.createDate < ?"

然后传递2个值,一个是parse日期后的Date,另外一个就是这个Date + 1天
0 请登录后投票
   发表时间:2008-04-23  
Quake Wang 写道
这是一个常见的sql查询问题,你可以改成用区间判断:
hql = "from  PojoA as a where a.createDate >= ? and a.createDate < ?"

然后传递2个值,一个是parse日期后的Date,另外一个就是这个Date + 1天

是不是关于使用hibernate来进行日期的比较查询时,基本都使用这种方式来处理呢?还有没有比这个更加简单的处理方式呢?
0 请登录后投票
   发表时间:2008-04-23  
除了上面的
要是数据不多,就用个like time%
要是有left()的话,就用个left(a.createDate,10) = time
0 请登录后投票
   发表时间:2008-05-04  
import 写道
除了上面的
要是数据不多,就用个like time%
要是有left()的话,就用个left(a.createDate,10) = time



有一个比较简单的方法
用setTimestamp
来设置参数
0 请登录后投票
   发表时间:2008-05-07  
import 写道
除了上面的
要是数据不多,就用个like time%
要是有left()的话,就用个left(a.createDate,10) = time


left() 的用法不懂,可以解释一下吗??
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics