Hibernate查询oracle中日期的右边界问题

这样的代码:
比如enddate="2007-3-12"

这样hibernate查询的条件是<=2007-3-12 00:00:00,也就是说,我梦必须在页面上选择右边界为2007-3-13,才能正确查询出3.12的数据,但这并不符合我们的使习惯

if (endDate != null &&! endDate.equals( "" )) {
            SimpleDateFormat sf
=new SimpleDateFormat("yyyy-MM-dd");
            
try{
                Date date
=sf.parse(endDate);
                        dc.add(Restrictions.le(
"actualenddate", enddate));
            }
catch(Exception e){
                e.printStackTrace();
            }

            
        }

 
解决方法有两个

(1)使用SQL

select startdate,actualenddate from busi_info where actualenddate<=to_date('2007-05-08 23:59:59','YYYY-MM-DD HH24:MI:SS');


(2) 在代码中给日期加1,使用Calendar

       

if (endDate != null &&! endDate.equals( "" )) {
            SimpleDateFormat sf
=new SimpleDateFormat("yyyy-MM-dd");
            
try{
                Date date
=sf.parse(endDate);
                Calendar  c
=Calendar.getInstance();   
                c.setTime(date);   
                c.add(c.DATE,
1);   
                Date enddate
=c.getTime();   
                dc.add(Restrictions.le(
"actualenddate", enddate));
            }
catch(Exception e){
                e.printStackTrace();
            }

            
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值