浏览 705 次
|
精华帖 (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的格式转换为 年月日呢。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-04-23
这是一个常见的sql查询问题,你可以改成用区间判断:
hql = "from PojoA as a where a.createDate >= ? and a.createDate < ?" 然后传递2个值,一个是parse日期后的Date,另外一个就是这个Date + 1天 |
|
| 返回顶楼 | |
|
时间:2008-04-23
Quake Wang 写道 这是一个常见的sql查询问题,你可以改成用区间判断: hql = "from PojoA as a where a.createDate >= ? and a.createDate < ?" 然后传递2个值,一个是parse日期后的Date,另外一个就是这个Date + 1天 是不是关于使用hibernate来进行日期的比较查询时,基本都使用这种方式来处理呢?还有没有比这个更加简单的处理方式呢? |
|
| 返回顶楼 | |
|
时间:2008-04-23
除了上面的
要是数据不多,就用个like time% 要是有left()的话,就用个left(a.createDate,10) = time |
|
| 返回顶楼 | |
|
时间:2008-05-04
import 写道 除了上面的
要是数据不多,就用个like time% 要是有left()的话,就用个left(a.createDate,10) = time 有一个比较简单的方法 用setTimestamp 来设置参数 |
|
| 返回顶楼 | |
|
时间:2008-05-07
import 写道 除了上面的
要是数据不多,就用个like time% 要是有left()的话,就用个left(a.createDate,10) = time left() 的用法不懂,可以解释一下吗?? |
|
| 返回顶楼 | |







