oralce SQL生成从当前月的第一天开始到当前月的最后一天之间的所有日期临时表

SELECT  
  trunc(sysdate,'MM') + ROWNUM - 1 as WORK_DATE   
FROM  
  DUAL   
CONNECT BY ROWNUM <= last_day(sysdate) - trunc(sysdate,'MM') + 1;

这段 Oracle SQL 代码的目的是生成从当前月的第一天(trunc(sysdate,'MM'))开始到当前月的最后一天(last_day(sysdate))之间的所有日期,包括首尾两天的日期。

  1. trunc(sysdate,'MM')

    • 这会返回当前日期所在月份的第一天。例如,如果今天是 2023-10-23,那么 trunc(sysdate,'MM') 会返回 2023-10-01。
  2. last_day(sysdate)

    • 这会返回当前日期所在月份的最后一天。例如,如果今天是 2023-10-23,那么 last_day(sysdate) 会返回 2023-10-31。
  3. last_day(sysdate) - trunc(sysdate,'MM') + 1

    • 这部分计算了从当前月的第一天到最后一天之间有多少天。例如,对于 2023-10 月,这将是 31 - 1 + 1 = 31。
  4. CONNECT BY ROWNUM <= ...

    • 这是一个 Oracle 特定的构造,用于生成一个基于行号的虚拟表。在这里,它用于生成从 1 到 last_day(sysdate) - trunc(sysdate,'MM') + 1 的行号序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值