zoukankan      html  css  js  c++  java
  • 统计每天的数据 无数据也要显示日期程序解决方法

      最近项目中遇到分组查询数据,按日期显示,如果那个日期没有数据,也要把日期显示出来.

      有两个方案:1)在数据库建一个用于所有日期的表,然后让查询结果与之关联。

           2)在程序中填充。

    对于方案一的话,可以写定时任务或者存储过程将日期写入相应的日期表,注意这个日期表只是为了查询的时候,带出数据为空的数据中的日期。以空间换取时间(简单实现)

    方案二是:利用一次循环,将日期直接填充到list中,

      具体原理是:start比对原数组,如果有就添加到新数组,没有就填充空数据到新数组,直到结束

    package test;
    
    import java.util.Date;
    
    public class Dog {
        private    String name;
        private  Date birthday;
            
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        
    
    }

    具体实现如下

    关键代码如下

    public static  List<Dog> addDayForNull(List<Dog> oldList,Date start,Date end){
            long n=getDateDay(start,end);
            ArrayList<Dog> newList=new ArrayList<Dog>();
            int num=oldList.size();
            int temp=0;
            for(int i=0;i<n;i++){
                if(temp < num){
                    //如果开始日期小于当前记录日期则增加空白数据
                    if(start.compareTo(oldList.get(temp).getBirthday()) < 0){
                    Dog dog=getNewDag(start);
                    newList.add(dog);
                }
                if(start.compareTo(oldList.get(temp).getBirthday()) == 0){//原数据加入
                    newList.add(oldList.get(temp));
                    temp++;
                }
                }else if(temp >= num && start.compareTo(end) <= 0){//加入空数据直到结束时间
                    Dog dog=getNewDag(start);
                    newList.add(dog);
                                
                }
                //开始时间向前加一天
                start=addDateOneDay(start);
                
            }
            
            return newList;
            
            


      

     
    public static Date addDateOneDay(Date date) {
            if (null == date) {
                return date;
            }
            Calendar c = Calendar.getInstance();
            c.setTime(date);   //设置当前日期
            c.add(Calendar.DATE, 1); //日期加1天
    //     c.add(Calendar.DATE, -1); //日期减1天
            date = c.getTime();
            return date;
        }
    学习的时间不一定要特定安排
  • 相关阅读:
    pyspark创建RDD数据、RDD转DataFrame以及保存
    pyspark将DataFrame转成table以及操作sql语句
    pyspark读取textfile形成DataFrame以及查询表的属性信息
    sql-lab闯关之20-22
    sql-lib闯关之lesson17-19
    sql-lab闯关之13-16
    sql-lab闯关之11-12
    sql-lib闯关之lesson8-10
    sql-lab闯关之7
    sql-lib闯关之5-6
  • 原文地址:https://www.cnblogs.com/zhongzheng123/p/5230707.html
Copyright © 2011-2022 走看看