如何扩展Oracle查询以获取当年剩余所有周的年、周等相关数据?
Oracle查询:获取当年剩余所有周的日期数据
基于你提供的获取当前日期维度的Oracle语句,以下是扩展后的查询,可输出当年剩余所有周的每一天数据,格式与示例一致:
WITH date_range AS ( SELECT TRUNC(SYSDATE) AS curr_date FROM DUAL UNION ALL SELECT curr_date + 1 FROM date_range WHERE curr_date + 1 <= TRUNC(ADD_MONTHS(SYSDATE, 12), 'YYYY') - 1 ) SELECT '(' || TO_CHAR(curr_date, 'YYYY/MM/DD/D') || ')' AS formatted_date FROM date_range ORDER BY curr_date;
语句说明:
- 递归CTE
date_range:从当前日期的零时开始,逐天生成日期,直到当年最后一天(TRUNC(ADD_MONTHS(SYSDATE, 12), 'YYYY') - 1计算出当年12月31日) - 格式化输出:用
TO_CHAR函数将日期按YYYY/MM/DD/D格式转换,再拼接括号,得到示例要求的(年/月/日/星期几)格式 - 排序:按日期升序排列,保证输出顺序符合时间逻辑
如果需要筛选每周的特定日期(比如仅每周一),可以在最后SELECT语句后添加WHERE TO_CHAR(curr_date, 'D') = '1'(注:Oracle中D的取值依赖会话的NLS设置,1通常代表周日,若需要周一为一周起始,可改用IW相关逻辑调整)
内容的提问来源于stack exchange,提问作者donovan rice
相关产品推荐
相关产品推荐

