需求如下~

输入年份,表格第一行 1-12 月

输入年份和月份  表格第一行 1--31  具体天数

表格第二行就是统计数量,没有补0.

看完首先想到MYSQL查询出连续一段时间和数量,没有 就为0.

好像这样

但是  做法 需要新建一个时间表 ,那个时间表里面的数据一定要事先生成,生成个几十年就够用了。再和查数据表连接。

可参考  http://www.cnblogs.com/LUA123/p/6155414.html

下面选择用Java后台处理整个需求,不用MYSQL。

查出有数据的时间 和 数量不难,要点是 按 连续月份  和日 排列 。

查出有数据的时间和数量 放入Map

Date start =ToolDateTime.parse(nf + "-" + yf + "-01",ToolDateTime.pattern_ymd);
Date end =ToolDateTime.parse(nf + "-" + (Integer.valueOf(yf)+1) + "-00",ToolDateTime.pattern_ymd);

查出 连续时间段  。

遍历连续时间段,通过(map)判断下,   有数量  就 set 数量 进一个对象,没有就 把这个对象 数量位置为0。 对象另一个属性不是查出来的

时间,是如图第一行。

挨个 添加进List。后台Java是

public void sumDays () {

        String nf = getPara("tjnf");
String yf = getPara("tjyf");
List<Record> jyrslist = JyrstjService.service.findjyrstj(nf,yf); //有数据的时间段和数量 Map<String, Record> jymap = new HashMap<>(); for (Record record : jyrslist) {
jymap.put(record.getStr("sj"), record);
} List<Record> jylist = new ArrayList<>();
int total = 0; if ( !"".equals(yf) && yf != null && !"".equals(nf) && nf != null) {
try {
Date start =ToolDateTime.parse(nf + "-" + yf + "-01",ToolDateTime.pattern_ymd);
Date end =ToolDateTime.parse(nf + "-" + (Integer.valueOf(yf)+1) + "-00",ToolDateTime.pattern_ymd); List<String> daySpaceDate = ToolDateTime.getDaySpaceDate(start, end); //连续的时间段 for (String day : daySpaceDate) {
Record record = new Record();
Date date = ToolDateTime.parse(day,ToolDateTime.pattern_ymd);
record.set("sj", date.getDate()); //把连续时间段变成对象属性 1-30 天数 if ( jymap.containsKey(day)) { // 有数量  就 set 数量 进一个对象
String sum = jymap.get(day).get("sum").toString();
total += Integer.valueOf(sum); //合计,与重点无关
record.set("sum", sum);
}else {
record.set("sum", 0);
} jylist.add(record);
}
} catch (Exception e) { } }else if ( !"".equals(nf) && nf != null ) { for (int i = 0; i < 12; i++) { String day = nf + "-" + (i < 10 ? "0" : "") + (i+1); Record record = new Record();
Date date = ToolDateTime.parse(day + "-01",ToolDateTime.pattern_ymd);
record.set("sj", (date.getMonth()+1) ); //某年的连续月份处理 if ( jymap.containsKey(day)) {
String sum = jymap.get(day).get("sum").toString();
total += Integer.valueOf(sum);
record.set("sum", jymap.get(day).get("sum"));
}else {
record.set("sum", 0);
} jylist.add(record); } } setAttr("total", total);
setAttr("jylist", jylist); render("/platform/xxgl/jyrstj/content.html");
}

sql语句 mysql 这样:

 select
count(1) sum,
date_format(lswczl.WCSJ,
'%Y-%m-%d') sj
from
表 lswczl
where
date_format(lswczl.WCSJ,'%Y-%m') = '2018-11'
group by
date_format(lswczl.WCSJ,
'%Y-%m-%d')

分时间段(年份或月份)统计,没有数字补0 Java(替代 MYSQL) 做法的更多相关文章

  1. [PHP学习教程 - 数字]001.数字补0(Num padding)

    引言:在日常工作中,经常要用到数字前后补0的操作,如:日期格式yyyy-MM-dd等等. 在php中有多种前后填充函数——今天,我们就介绍常用的两种,实现数字补零: str_pad sprintf 大 ...

  2. python 中str format 格式化数字补0方法

      >>> "{0:03d}".format(1)'001'>>> "{0:03d}".format(10)'010'> ...

  3. PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法

    一.数字补0. 如果要自动生成学号,自动生成某某编号,就像这样的形式“d0000009”.“d0000027”时,那么就会面临一个问题,怎么把左边用0补齐成这样8位数的编码呢?我想到了两种方法实现这个 ...

  4. SQL语句更新时间字段的年份、月份、天数、时、分、秒

    SQL语句更新时间字段的年份.月份.天数.时.分.秒 --修改d表日期字段的年份update dset birth=STUFF(convert(nvarchar(23),birth,120),1,4, ...

  5. js中获得当前时间是年份和月份

    js中获得当前时间是年份和月份,形如:201208       //获取完整的日期 var date=new Date; var year=date.getFullYear();  var month ...

  6. oracle 行转列,动态年份,月份列。已解决!

    -----------------存储过程包体----------- procedure GetComparativeAnalysisTB(p_StartTime varchar2, ----开始时间 ...

  7. sql生成连续日期(年份、月份、日期)

    此随笔主在分享日常可能用到的sql函数,用于生成连续日期(年份.月份.日期) 具体的看代码及效果吧! -- ============================================= ...

  8. oracle 根据一个时间段获取这个时间段内所有月份、天数、日期

    注:本文来源于< oracle 根据一个时间段获取这个时间段内所有月份.天数.日期 > 获取月份列表: SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2014-10 ...

  9. Calendar获取当前年份、月份、日期

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Te ...

  10. java获取当前年份、月份和日期字符串等

    Java获取当前年份.月份和日期是通过Calendar类的实例对象来获取的. 首先创建一个Calendar类的实例对象,Calendar类属于java.util包. Calendar calendar ...

随机推荐

  1. FastAPI Pydantic动态调整Schema

    title: FastAPI Pydantic动态调整Schema date: 2025/3/29 updated: 2025/3/29 author: cmdragon excerpt: Pydan ...

  2. 【网络协议】深入理解HTTP协议

    # 协议 协议就是一种双方提前约定好采用某种形式,以某种规格,利用某种物体把数据传输出去:而另一方再以同样的规则和流程去接收数据的约定制度或者规章. 现代网络是由多种运行在不同平台上的异构系统组成的. ...

  3. 使用Python计算并可视化长直导线产生的磁场

    引言 大家好,今天我们来探讨一个有趣的话题--长直导线产生的磁场,并通过 Python 来进行计算和可视化.你可能会问,为什么要研究这个问题?其实,这是电磁学中的一个基础问题,理解了它,我们就能更好地 ...

  4. python,提取数据,提取奇数位或者偶数位数据的方法

    如有数组num=["1","2","3","4","5"] 怎么按照奇.偶数位取数? 写法如下 nu ...

  5. 尝试通过DeepSeek来优化提高WordPress网站的打开速度,还真有效!

    头图由AI生成 嗯,用户问的是WordPress网站如何优化打开速度.首先,我需要考虑用户可能的背景.他们可能是一个WordPress网站的管理员或者拥有者,发现网站加载速度不够快,想要进行优化.用户 ...

  6. <HarmonyOS第一课06>构建更加丰富的页面

    视频链接: https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101717497640610394?ha_sou ...

  7. nacos安装

    linux-docker 下载nacos docker pull nacos/nacos-server:v2.2.3 `` ## 下载git脚本 ```shell cd /prod mkdir nac ...

  8. 掌握Node.js原理,开启异步编程之旅

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  9. golang 接口按需获取资源

    场景 爬虫业务场景,我们需要调用三方接口获取代理ip地址,每个ip地址可以使用的时间有限和价格的,本着不浪费资源,我们在这里做一层封装. 当有其他业务调用我们接口的时候,会拉起定时任务,这个定时任务的 ...

  10. DevEco重大更新快来体验吧

    HarmonyOS首个api17 release已经正式发布了.这次的更新DevEco增加了很多重大特性,系统能力也有所增强.DevEco现在支持创建api17的应用了,模拟器也首次支持阔折叠手机以及 ...