您的位置:首页 > 数据库

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

2016-01-25 17:13 204 查看
在一些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类型接收,会出现异常导致查询失败

原创文章转载请注明出处,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: