通过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)!