自学内容网 自学内容网

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

通过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’)替换为所需月份的第一天。查询将生成从指定月份的第一天开始到月底的日历,并以周日开头。如果指定月份的第一天不是周日,则会补全上月的最后一天。如果指定月份的最后一天不是周日,则会补全下月的第一天。结果按日历日期排序。


原文地址:https://blog.csdn.net/gongjin28_csdn/article/details/137787823

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!