日期类型匹配方法
2012-11-15 15:28
183 查看
应用场景:
从前台传来一个时间段:开始日期 start (如2012-11-05) , 结束时间 end(如2012-11-15), 从数据库查询 从日期 start 到 日期end 之间所有符合条件的数据集合,返回一个 List 对象
例如:
/**
* 返回指定 观测站某时间段内每天8时的水位集合
*/
@Override
public List getDataByStartAndEndTime(String id, String start, String end) {
String time = "08";
String startDate = start + " " + time +":00:00";
String endDate = end + " " + time +":00:00";
String sql = "select stcd, to_char(tm, 'YYYY-MM-DD') tm, rz from st_rsvr_r where stcd = ? and tm <= to_date( ? , 'YYYY-MM-DD hh24:mi:ss') and tm > to_date( ? , 'YYYY-MM-DD hh24:mi:ss') and to_char(tm, 'hh24')= ? order by tm ";
return getJdbcTemplate().queryForList(sql, id, startDate, endDate, time);
}
返回List之后,需要将日期start 到end 之间的某个日期与数据库查询出来的List对象中某个日期进行匹配,new一个数组,数组值依次表示 日期start到end 每日8时的水位值,如果数据库中没有某个日期的记录,那么这天的水位值存为0,方法如下 :(其中startdata1 对应 结束日期 end , enddata 对应 开始日期 start)
/**
* 返回带参某水库水位数据源
* @param startdata1 开始日期
* @param enddata 结束日期
* @param num
* @return
*/
private double[] getWaterLineHelp(String id, String startdata1, String enddata, int num) {
Map<String, String> resultMap = new HashMap<String, String>();
double[] getd = new double[num];
List<Map> list = stRsvrRDao.getDataByStartAndEndTime(id, startdata1, enddata);
if (null != list && !list.isEmpty()) {
for(int i=0; i<list.size(); i++){
Map map = list.get(i);
resultMap.put(map.get("TM") + "", map.get("RZ") + "");
}
}
if (null != getd && getd.length > 0) {
for (int i = 0; i < getd.length; i++) {
String key = DateUtils.getNextDay2(enddata, i+1 + "");
if (resultMap.containsKey(key)) {
getd[i] = Double.parseDouble(resultMap.get(key));
} else {
getd[i] = 0;
}
}
}
return getd;
}
如上代码,遍历List 用Map对象map接收,然后将这个map对象中的日期和水位存入另一个Map对象resultMap中, 然后从开始日期 enddata依次延后 ,跟resultMap对象中的key值匹配,如果相等,就表示这个日期存有水位值,赋值就好;如果没有匹配上,表示数据库没有这个日期的记录,赋值为0;
效果如下:
从前台传来一个时间段:开始日期 start (如2012-11-05) , 结束时间 end(如2012-11-15), 从数据库查询 从日期 start 到 日期end 之间所有符合条件的数据集合,返回一个 List 对象
例如:
/**
* 返回指定 观测站某时间段内每天8时的水位集合
*/
@Override
public List getDataByStartAndEndTime(String id, String start, String end) {
String time = "08";
String startDate = start + " " + time +":00:00";
String endDate = end + " " + time +":00:00";
String sql = "select stcd, to_char(tm, 'YYYY-MM-DD') tm, rz from st_rsvr_r where stcd = ? and tm <= to_date( ? , 'YYYY-MM-DD hh24:mi:ss') and tm > to_date( ? , 'YYYY-MM-DD hh24:mi:ss') and to_char(tm, 'hh24')= ? order by tm ";
return getJdbcTemplate().queryForList(sql, id, startDate, endDate, time);
}
返回List之后,需要将日期start 到end 之间的某个日期与数据库查询出来的List对象中某个日期进行匹配,new一个数组,数组值依次表示 日期start到end 每日8时的水位值,如果数据库中没有某个日期的记录,那么这天的水位值存为0,方法如下 :(其中startdata1 对应 结束日期 end , enddata 对应 开始日期 start)
/**
* 返回带参某水库水位数据源
* @param startdata1 开始日期
* @param enddata 结束日期
* @param num
* @return
*/
private double[] getWaterLineHelp(String id, String startdata1, String enddata, int num) {
Map<String, String> resultMap = new HashMap<String, String>();
double[] getd = new double[num];
List<Map> list = stRsvrRDao.getDataByStartAndEndTime(id, startdata1, enddata);
if (null != list && !list.isEmpty()) {
for(int i=0; i<list.size(); i++){
Map map = list.get(i);
resultMap.put(map.get("TM") + "", map.get("RZ") + "");
}
}
if (null != getd && getd.length > 0) {
for (int i = 0; i < getd.length; i++) {
String key = DateUtils.getNextDay2(enddata, i+1 + "");
if (resultMap.containsKey(key)) {
getd[i] = Double.parseDouble(resultMap.get(key));
} else {
getd[i] = 0;
}
}
}
return getd;
}
如上代码,遍历List 用Map对象map接收,然后将这个map对象中的日期和水位存入另一个Map对象resultMap中, 然后从开始日期 enddata依次延后 ,跟resultMap对象中的key值匹配,如果相等,就表示这个日期存有水位值,赋值就好;如果没有匹配上,表示数据库没有这个日期的记录,赋值为0;
效果如下:
相关文章推荐
- spring3 MVC及security在方法中获取用户名及角色以及提交form时字符串String与日期Date类型的绑定
- (转)SpringMVC:提交数据遭遇基础类型和日期类型报400错误解决方法
- excel转换日期格式,将yyyymmdd类型日期转换成yyyy-mm-dd等日期类型方法
- SpringMVC日期格式类型转换问题--3种处理方法
- POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)
- PLSQL查询时date类型日期显示星期的问题解决方法
- 把datetime类型的日期转化成年月日或其他格式方法总结
- SpringMVC日期类型转换问题三大处理方法归纳
- SpringMVC日期类型转换问题三大处理方法归纳
- oracle中日期类型相减,并乘以一个数,保留2位小数的方法。
- 第29天(就业班) Action开发、通配符、路径匹配、常量、数据处理、日期类型转换、文件上传下载
- [转]SpringMVC日期类型转换问题三大处理方法归纳
- xpath的数据和节点类型以及XPath中节点匹配的基本方法
- 找到多个与名为“HOME”的控制器匹配的类型。如果为此请求(“{CONTROLLER}/{ACTION}/{ID}”)提供服务的路由在搜索匹配此请求的控制器时没有指定命名空间,则会发生此情况。如果是这样,请通过调用含有“NAMESPACES”参数的“MAPROUTE”方法的重载来注册此路由。
- ORACLE里怎么能判断一个日期类型的字段是否为空,解决方法:is null
- MVC area出现“找到多个与名为“Home”的控制器匹配的类型”错误的解决方法
- Access数据库中 时间/日期 类型(Datetime)的比较方法
- C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
- (转载)C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
- mvc area出现“找到多个与名为“Home”的控制器匹配的类型”错误的解决方法