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

来源:互联网 发布:淘宝信用借钱额度 编辑:程序博客网 时间:2024/06/01 07:52

在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 ");}

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