我想将六个月的日期从2016年开始滚动到当前日期,输出应如下所示
Year Start_Date End_Date
2016 1/1/2016 30/6/2016
2016 1/7/2016 31/12/2016
2017 ... like this for 2017 & 2018
我尝试像获取一年中的第一个日期一样
SELECT TRUNC(to_date(Date_key, 'YYYYMMDD'), 'YEAR')
FROM Table;
,并从第一个日期起增加六个月,但是在这种情况下,结束日期将是一个问题。有没有可以不用循环的功能?
答案 0 :(得分:3)
像这样吗?
j
答案 1 :(得分:1)
您也可以尝试
SELECT :p_from_year + CEIL(ROWNUM/2)-1,
ADD_MONTHS(TRUNC(TO_DATE(:p_from_year + CEIL(rownum/2)-1, 'YYYY'), 'YYYY'),6-(MOD(rownum, 2)*6)) from_date,
ADD_MONTHS(TRUNC(TO_DATE(:p_from_year + CEIL(rownum/2)-1, 'YYYY'), 'YYYY'),12-(MOD(rownum, 2)*6))-1 to_date
FROM dual
CONNECT BY CEIL(rownum/2)-1 <= (:p_to_year - :p_from_year)