查询数据库最近一周每天的数据的方法

来源:互联网 发布:spss数据标准化公式 编辑:程序博客网 时间:2024/06/14 09:33

这里以 查询 keep app 用户 最近一周 每天训练时间的 例子为例   

训练时间单位为:min 如图


实体类 

CourseMemberDO{
private int minutes;//训练的时间
private Date createDate;//训练的日期}

时间工具类:

DateUtils1---------------------针对第一种方法

public class DateUtils {
 * 获取当前周每天的开始时间 * * @param * @return */public static List<String> appendBeginDate() {    List<String> beginDateStrs = new ArrayList<>();    for (String str : getWeekdays()) {        String str1 = str + " " + "00:00:00";        beginDateStrs.add(str1);    }    return beginDateStrs;}/** * 获取当前周每天的结束时间 * * @return */public static List<String> appendEndDate() {    List<java.lang.String> endDateStrs = new ArrayList<>();    for (java.lang.String str : getWeekdays()) {        java.lang.String str1 = str + " " + "24:00:00";        endDateStrs.add(str1);    }    return endDateStrs;}


Dateutils2---------针对第二种方法

public class DateUtils {
// 获得本周一与当前日期相差的天数public static int getMondayPlus() {    Calendar cd = Calendar.getInstance();    int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);    if (dayOfWeek == 1) {        return -6;    } else {        return 2 - dayOfWeek;    }}
// 获得当前周     周一  的日期

public static Date star() {    int mondayPlus = getMondayPlus();    GregorianCalendar currentDate = new GregorianCalendar();    currentDate.add(GregorianCalendar.DATE, mondayPlus);    Date monday = currentDate.getTime();    return monday;}// 获得当前周     周日  的日期public static Date end() {    int mondayPlus = getMondayPlus();    GregorianCalendar currentDate = new GregorianCalendar();    currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);    Date monday = currentDate.getTime();    return monday;}

查询数据库层 你懂得 自己写很基本的;、


实现 的 第一种方法 (每周的每天的0-24时查询数据库获取每天的训练总时间(查7次))

获取每周每天的起始时间List<Integer> minuteList = new ArrayList<>();List<String> beginDateStrs = DateUtils.appendBeginDate();List<String> endDateStrs = DateUtils.appendEndDate();遍历获取每天对应的学习情况for (int i = 0; i < 7; i++) {    int minutes = 0;    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    Query query = new Query();    Criteria criteria = new Criteria();    criteria.and("memberId").is(memberInfoDO.getMemberId());    try {        Date beginDate=simpleDateFormat.parse(beginDateStrs.get(i));        Date endDate=simpleDateFormat.parse(endDateStrs.get(i));        criteria.and("createDate").gte(beginDate).lte(endDate);    } catch (Exception e) {        e.printStackTrace();    }    query.addCriteria(criteria);    List<CourseMemberDO> list = mongoTemplate.find(query, CourseMemberDO.class);    for (CourseMemberDO courseMemberDO : list) {        minutes += courseMemberDO.getMinutes();    }    minuteList.add(minutes);}
实现 的 第二种方法 (直接查出7天的数据再根据每天 整合出每天的训练总时间(查询一次数据库))
Query query=new Query();Criteria criteria=new Criteria();criteria.and("memberId").is(memberInfoDO.getMemberId());criteria.and("createDate").gte(DateUtils.star()).lte(DateUtils.end());query.addCriteria(criteria);Calendar cal = Calendar.getInstance();List<CourseMemberDO> list =mongoTemplate.find(query, CourseMemberDO.class); Integer[] minuteList={0,0,0,0,0,0,0};for(CourseMemberDO courseMemberDO : list){    cal.setTime(courseMemberDO.getCreateDate());    int w=cal.get(Calendar.DAY_OF_WEEK);    switch (w){        case 1:          minuteList[6]+=courseMemberDO.getMinutes();          break;        case 2:            minuteList[0]+=courseMemberDO.getMinutes();            break;        case 3:            minuteList[1]+=courseMemberDO.getMinutes();            break;        case 4:            minuteList[2]+=courseMemberDO.getMinutes();            break;        case 5:            minuteList[3]+=courseMemberDO.getMinutes();            break;        case 6:            minuteList[4]+=courseMemberDO.getMinutes();            break;        case 7:            minuteList[5]+=courseMemberDO.getMinutes();            break;  }}apiMsgVO.setMessage(ApiMsgVO.REQUEST_SUCCESS_MESSAGE);apiMsgVO.setData(minuteList);return apiMsgVO;


此致敬礼!!!!!

实现 的 第一种方法 (每周的每天的0-24时查询数据库获取每天的训练总时间(查7次))
实现 的 第一种方法 (每周的每天的0-24时查询数据库获取每天的训练总时间(查7次))
阅读全文
0 0
原创粉丝点击