Hibernate 日期查询的一点总结

hibernate 日期查询的一点总结: 先说一下,我用的是Oracle。以下是我的表,很简单:table name: AAA
id varchar2(32)
name Date

我定义了二个日期,二种方式初始化:
Date d=new Date(1219987516734l);
Date dd= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2008-08-29 13:25:16");
同时我把插二条记录:
values('aaa','2008-08-29 13:25:16')
values('bbb','2008-08-29 13:25:16')
接下来我用 DetachedCriteria 来查询:代码如下:
DetachedCriteria dc= DetachedCriteria.forClass(Aaa.class);
dc.add(Restrictions.eq("name", dd));
//或 dc.add(Restrictions.eq("name", dd));
ContextUtil.getBJFYService().getBaseManager().searchByDetachedCriteria(dc).size();
这个时间用d这个日期一条也查不出来,用dd可以查出这二条来,我后来把name 的data类型改为: TIMESTAMP(6) ,把name的值分别改为d,和dd二个日期,
再查的时候就是一个日期一条,结果上面得出如下结论:
1:d.getTime()-dd.getTime()==743,也就是说d比dd多了743毫秒,oracle的date类型是不存储毫秒数的.所以我用d 在name是date类型的时候怎么写查不到记录,而TIMESTAMP(6) 有毫秒数
所以二个日期可以分别查到一条。
2:hibernate 的日期比较应该是用毫秒数进行比较的. 不管用什么,反正不是用下面这种方式比较:
select * from aaa where name=to_date('20080829132516','yyyymmddHH24miss')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值