js: $.ajax({
url: "visitorScaleAnalyse.do?method=getVisitorAgeCount",data: {
"zeroTime":DateUtil.dateToStr(new Date(), "yyyy-MM-dd")//获取当前系统时间
},
type: 'post',
dataType: "json",
success: function (data, text) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
onLoading: function () {
startMyWaitting('处理中...');
}
});
后台:
/**
* 查询参数
*
* @param request
* @return
*/
private HashMap getQueryParam(HttpServletRequest request) {
HashMap param = new HashMap();
String zeroTime = request.getParameter("zeroTime");
// Long p = 1468585465796l;
// param.put("zeroTime", p);
Date date = null;
try {
date = stringToDate(zeroTime, "yyyy-MM-dd"); // String类型转成date类型
} catch (ParseException ex) {
java.util.logging.Logger.getLogger(VisitorScaleAnalyseController.class.getName
()).log(Level.SEVERE, null, ex);
}
long currentTime = dateToLong(date); // date类型转成long类型
param.put("zeroTime", currentTime);
return param;
}
// string类型转换为date类型
public static Date stringToDate(String strTime, String formatType)
throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(formatType);
Date date = null;
date = formatter.parse(strTime);
return date;
}
// date类型转换为long类型
public static long dateToLong(Date date) {
return date.getTime();
}
sql语句由身份证号截取分时间段查询人员数量:
select nnd as '年龄段',count(*) as '人数' from(
select
case
when year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))>=18 and year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))<=30 then '18-30岁'
when year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))>=31 and year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))<=45 then '31-45岁'
when year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))>=45 and year(curdate())-if(length(visitorSpotNumber)=18,substring(visitorSpotNumber,7,4),if(length(visitorSpotNumber)=15,concat('19',substring(visitorSpotNumber,7,2)),null))<=60 then '46-60岁'
ELSE '其他'
end
as nnd from dwms_t_visitor
WHERE addTime BETWEEN 1468380186015 AND 1468636727062
)a group by nnd
遍历List,获取存在list中的map值:
//查询各时段访客数量
List visitcount = timeIntervelStaticsService.getQueryVisitorCount(param);
for (int i = 0; i < visitcount.size(); i++) {
HashMap map = new HashMap();
map = (HashMap) visitcount.get(i);
obj.put("oneTosix", map.get("count(*)"));
map = (HashMap) visitcount.get(i + 1);
obj.put("sixTotwelve", map.get("count(*)"));
map = (HashMap) visitcount.get(i + 2);
obj.put("twelveToeighteen", map.get("count(*)"));
map = (HashMap) visitcount.get(i + 3);
obj.put("eighteenTotwentyfour", map.get("count(*)"));
break;
}
另外可以直接在后台获取当前的系统日期,就不用从js往后传了,代码:
Date dt = new Date();
SimpleDateFormat matter1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("当前日期:"+matter1.format(dt));
或者先从long型的时间中取得年月日:
Date date=new Date(System.currentTimeMillis());
System.out.println((1900+date.getYear())+"-"+(date.getMonth()+1)+"-"+date.getDate()+"");//获取的年份是1900年开始的需要加上1900,月份是从0开始的
Date date=new Date(System.currentTimeMillis());
System.out.println((1900+date.getYear())+"-"+(date.getMonth()+1)+"-"+date.getDate()+"");//获取的年份是1900年开始的需要加上1900,月份是从0开始的