Postgresql数据数据库中按日、月、周、年、时、分,30分钟的统计解决方案

对要统计的时间字段进行字符转换处理,再按照其分组即可实现对数据进行日,周,月,年,时,分,秒的统计

1、按日统计

to_char( h.row_date, 'yyyy-MM-dd' ) AS row_date2

2、按月统计

to_char(h.row_date, 'yyyy-MM' ) AS row_date2

3、按年统计

to_char( h.row_date,'yyyy' ) AS row_date2

4、按小时统计

to_char( h.row_date, 'yyyy-MM-dd HH' ) AS row_date2

5、按分钟统计

to_char( h.row_date, 'yyyy-MM-dd HH:mm' ) AS row_date2

6、按周统计

       to_char(h.row_date, 'yyyy' ) || EXTRACT ( week FROM h.row_date ) :: INTEGER ASrow_date2

获取到数据库输出的字段中的年份和周数。

String row_date=rs.getString("row_date2");

//获取数据库输出日期的年份

  int year=Integer.parseInt(row_date.substring(0, 4));

//获取数据库输出日期的周数

   if(row_date.length()>=6){

                 week=Integer.parseInt(row_date.substring(4,6));}

   else{

                week=Integer.parseInt(row_date.substring(4,5));

            }

           String row_date2=getFirstDayOfWeek(year, week);

           trafficMap.put("row_date", row_date2);

将查询出的内容日期转换成当周周一的时间

//将周统计中获取的如201636,表示201636周,获取其周一的时间

   public String getFirstDayOfWeek(int year, int week) {

        // 先滚动到该年

          nows.set(Calendar.YEAR, year);

        // 滚动到周

          nows.set(Calendar.WEEK_OF_YEAR, week);

        // 得到该周第一天

          nows.set(Calendar.DAY_OF_WEEK, 2);

        String firstDay = df.format(nows.getTime());

        return firstDay;

       }

7、按30分钟进行统计

case when substr( to_char(h.row_date, 'yyyy-mm-dd hh24:mi'),15, 16) :: integer <=30 then to_char(h.row_date, 'yyyy-mm-dd hh24')||':30' else to_char( h.row_date, 'yyyy-mm-ddhh24' )||':60'

end as row_date2


猜你喜欢

转载自blog.csdn.net/weixin_42324471/article/details/80473207
今日推荐