查询日期范围时SQL条件的写法

在Java web页面开发中经常遇到检索条件包含一个开始日期、终止日期,输入后,查询符合该日期范围内的记录。对于这样的需求我们要了解清楚客户到底想要检索出什么样的数据。如果检出的数据包含了以下几种情况,那么就基本能够满足绝大多数需求:

1、表中数据的开始日、终止日完全落在检索条件范围内;

2、表中的数据与检索条件范围有交集;

3、表中的数据完全包含了检索条件范围;

4、表中数据的日期范围完全落在检索条件范围之内。

一般来说客户需要的数据可能是以上4中情况中的任何一种之一,都需要检索出来。符合以上4中case的SQL文如下:

//委托时间开始、委托时间结束都不为空
sql.append(" and (to_char(b.start_Time,'YYYYMMDD') between :startTime and :endTime");
sql.append(" or to_char(b.end_Time,'YYYYMMDD') between :startTime and :endTime)");

//委托时间开始不空、结束时间为空
if(!StringUtil.isEmpty(strTmp_1) && StringUtil.isEmpty(strTmp_2)){
   	sql.append(" and to_char(b.start_Time,'YYYYMMDD') >=:startTime ");
}
//委托时间开始空、结束时间为不空
if(StringUtil.isEmpty(strTmp_1) && !StringUtil.isEmpty(strTmp_2)){
	sql.append(" and to_char(b.end_Time,'YYYYMMDD') <=:endTime ");}

这样就包含了以上所有情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值