Генерировать диапазон дат за год
1 ответ
Что-то вроде этого. Адаптируйте по мере необходимости. Вы, вероятно, не будете select * from ranges
но вместо этого вы будете использовать диапазоны везде, где вам нужно. Дата ввода dt
, выбранный из таблицы input_date
в моем решении, вместо этого может быть переменная связывания в вашем приложении и т. д. Надеюсь, что вы сможете самостоятельно определить настройки; если нет, пожалуйста, напишите обратно.
with
input_date ( dt ) as (
select to_date('07/01/2014', 'mm/dd/yyyy')
from dual
),
ranges ( date_from, date_to ) as (
select add_months(dt, 12 * (level - 1)) + level - 1,
least(trunc(sysdate), add_months(dt, 12 * level) + level - 1)
from input_date
connect by add_months(dt, 12 * (level - 1)) + level - 1 <= trunc(sysdate)
)
select * from ranges
;
DATE_FROM DATE_TO
---------- ----------
07/01/2014 07/01/2015
07/02/2015 07/02/2016
07/03/2016 11/28/2016