Я написал запрос, чтобы получить дату начала кварталов текущего и предыдущего года, используя sysdate.
например.Сегодня приходится на 1-й квартал года, поэтому я хочу получить только дату начала 1-го квартала прошлого года и этого года.Если я нахожусь в декабре (то есть в 4-м квартале), я хочу получить даты начала 8 кварталов (4 с прошлого года, 4 с этого года)
select b.dt,
to_number(to_char(SYSDATE, 'Q')),
to_number(to_char(b.dt, 'Q'))
from dual a,
(select add_months(trunc(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -12),
'yyyy'),
(rownum - 1) * 3) dt
from all_objects
where rownum <= 8
and add_months(trunc(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -12),
'yyyy'),
(rownum - 1) * 3) <= SYSDATE
and to_number(to_char(SYSDATE, 'Q')) >=
to_number(to_char(add_months(trunc(ADD_MONTHS(TRUNC(SYSDATE,
'MM'),
-12),
'yyyy'),
(rownum - 1) * 3),
'Q'))) b
Этот запрос только возвращаетдата начала 1-го квартала прошлого года.Я ожидаю получить дату начала 1-го квартала этого года.