项目中SQL语句实现时间联动查询

在一些web项目中有时候会需要查询一段时间内的内容,本篇文章就简要的介绍了一些这样的操作:
前端代码:

<td>
    开始时间:   
</td>
<td >
    <input type="text"  id="startDate" name="startDate" value="${startDate }" style="width:150px"  class="required" />
</td>

<td>
    结束时间:   
</td>
<td >
    <input type="text" id="endDate" name="endDate" value="${endDate }" style="width:150px" class="required"/>
</td>

脚本部分:

<script type="text/javascript">
  $(function() {
    $( "#startDate" ).datepicker({ 
     defaultDate: "+1w",
      changeMonth: true,
      changeYear: true,
      dateFormat: 'yy-mm-dd',
      onClose: function( selectedDate ) {
        $( "#endDate" ).datepicker( "option", "minDate", selectedDate );
      }    
    });
    $( "#endDate" ).datepicker({   
      defaultDate: "+1w",
      changeMonth: true,
      changeYear: true, 
      dateFormat: 'yy-mm-dd',
      onClose: function( selectedDate ) {
        $( "#startDate" ).datepicker( "option", "maxDate", selectedDate );
      }
    });
  });
 </script>

以上实现了在前端页面的时间联动(样式一般,网上有很多好看的资源)

在controller中需要如下形式的语句块来接收前端传递过来的时间参数

String startDate,
String endDate,

一般在web项目中时间块查询是追加在where语句后面的,所以:

if(startDate!=null&&!"".equals(startDate)){
    parameters.put("startDate",startDate);
}else{
    parameters.put("startDate",null);
}
if(endDate!=null&&!"".equals(endDate)){
    parameters.put("endDate",endDate);
}else{
    parameters.put("endDate",null);
}

在service中接收如下:
parameters是方法中参数:

String startDate = (String) parameters.get("startDate");
String endDate = (String) parameters.get("endDate");

当时间不为空时,追加查询语句:

if (startDate!=null) {
    sql.append(" and to_char(er.CREATE_DATE,'yyyy-mm-dd')>=:startDate ");
        }
if(endDate!=null ){
    sql.append(" and to_char(er.CREATE_DATE,'yyyy-mm-dd')>=:endDate ");
}

将以上代码放入程序中即可处理相应的需求
注意以上语句中时间的格式都是用String,因为在实现查询语句那里会将传过来的字符串转为时间类型
如果提前就用Date类型接收,会出现异常导致查询失败
原创文章转载请注明出处,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值