通过时间的起期和止期,获取其中的日期集合

在大数据工作中遇到的一个统计问题,选择日期的起期或者是止期,可能是年,月,日,获取该时间段中的年,月,日的统计数据。首先就要去拿到时间段的集合,可能是年,可能是月,也可能是日,直接上代码

public static void main(String[] args) {
    System.out.println(getTwoDaysDayDes("2023-01-01","2023-04-15"));
}

public static List<String> getTwoDaysDayDes(String startDate, String endDate) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    List<String> dateList = new ArrayList<String>();
    try {
        Date dateOne = sdf.parse(startDate);
        Date dateTwo = sdf.parse(endDate);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dateOne);
        dateList.add(startDate);
        while (dateTwo.after(calendar.getTime())) {
            calendar.add(Calendar.DATE, 1);
            dateList.add(sdf.format(calendar.getTime()));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return dateList;
}

以上是获取日的List集合,若是要年或者月,把对应的日期格式改为‘yyyy’ 或者’yyyy-MM’,Calendar.DATE改为YEAR或者MONTH即可
在这里插入图片描述
如果是需要数据库获取的话,PGsql有一套方法

SELECT
to_char( T, ‘yyyy’ ) AS wmonth
FROM
generate_series ( ‘2022-01-01’ :: DATE, ‘2022-12-31’ :: DATE, ‘1 year’ :: INTERVAL ) AS T;

SELECT
to_char( T, ‘yyyy-MM’ ) AS wmonth
FROM
generate_series ( ‘2022-01-01’ :: DATE, ‘2022-12-31’ :: DATE, ‘1 month’ :: INTERVAL ) AS T;

SELECT
to_char( T, ‘yyyy-MM-dd’ ) AS wmonth
FROM
generate_series ( ‘2022-01-01’ :: DATE, ‘2022-12-31’ :: DATE, ‘1 day’ :: INTERVAL ) AS T;

在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值