level、connect by level 实例应用 -- 生成当月所有日期表

该博客介绍了如何使用Oracle SQL的level和connect by level特性来生成特定月份的所有日期,以满足业务需求,如填充空气质量指数的日历展示。通过查询系统日期、获取月份的第一天,结合level函数,逐步生成日期序列,最终形成完整的日期表。示例查询展示了如何动态查询不同月份的天数,以适应前端展示需求。
摘要由CSDN通过智能技术生成

业务需求,查询某一年某月的 AQI(空气质量指数),前端根据返回数据,生成日历。
从数据库中查询到的 AQI 监测数据缺失或者日期不连续 ,而需要返回给前端的数据格式为:

[
  {
    "day": "01",
    "aqi": "55"
  },
  {
    "day": "02",
    "aqi": "142"
  },
  ...
  ...
  {
    "day": "30",
    "aqi": "42"
  },
  {
    "day": "31",
    "aqi": "33"
  }
]

于是想到了生成一个月份天数那种表(列名为 day,值为当前月天数号码),与业务查询结果做 join 查询应该可以解决问题。但是在上面过程中,发现控制某年某月天数需要在 trunc 函数中传参数(类似 yyyymm 这种格式),又鉴于查询语句写在 .yml 文件中,参数传递只能传入到 where 子句中。所以,实际项目代码又为了简便,耍了点滑。


1.查询当前系统日期,一般做法是:

select sysdate from dual;

查询结果为:
这里写图片描述
2.若查询当天前后日期,如查询昨天日期格式:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值