通过sql返回指定月份的日历,包含日期、周几,以周日开头,不足的补全上月和下月的日历

本文介绍了如何使用OracleSQL的CONNECTBY和ROWNUM功能以及TO_CHAR函数创建一个指定月份的日历,确保以周日为开头,同时补全上月和下月的日期,以满足需求并按日期排序。
摘要由CSDN通过智能技术生成

通过sql返回指定月份的日历,包含日期、周几,以周日开头,不足的补全上月和下月的日历

        在Oracle SQL中,可以使用CONNECT BY和ROWNUM来生成指定月份的日历,并通过TO_CHAR函数将日期转换为周日开头的格式。以下是一个示例查询,可以返回指定月份的日历,包含日期和周几,以周日开头,并补全上月和下月的日期:

SELECT   
    CASE   
        WHEN TO_CHAR(date_value, 'D') = 1 THEN date_value - 1  
        ELSE date_value  
    END AS calendar_date,  
    TO_CHAR(date_value, 'DAY') AS day_of_week  
FROM (  
    SELECT   
        TRUNC(ADD_MONTHS(TO_DATE('2023-07-01', 'YYYY-MM-DD'), LEVEL - 1), 'MM') + ROWNUM - 1 AS date_value  
    FROM dual  
    CONNECT BY LEVEL <= 31  
) calendar  
WHERE date_value BETWEEN TRUNC(TO_DATE('2023-07-01', 'YYYY-MM-DD'), 'MM') AND LAST_DAY(TO_DATE('2023-07-01', 'YYYY-MM-DD'))  
ORDER BY calendar_date;

        在上面的查询中,将TO_DATE(‘2023-07-01’, ‘YYYY-MM-DD’)替换为所需月份的第一天。查询将生成从指定月份的第一天开始到月底的日历,并以周日开头。如果指定月份的第一天不是周日,则会补全上月的最后一天。如果指定月份的最后一天不是周日,则会补全下月的第一天。结果按日历日期排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小野猪

若恰好解决你的问题,望打赏哦。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值