在一些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类型接收,会出现异常导致查询失败
原创文章转载请注明出处,谢谢。