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

来源:互联网 发布:linux yum安装maven 编辑:程序博客网 时间:2024/06/03 18:13

在一些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
原创粉丝点击