Oracle поддерживает арифметические операции. Итак, sysdate+1
завтра.
Мы можем генерировать строки, используя Иерархический синтаксис Oracle , CONNECT BY. Псевдостолбец LEVEL дает нам необходимый нам прирост.
Хитрая часть работает с несколькими строками таблицы. CONNECT BY сгенерирует продукт, если мы не сможем связать сгенерированные строки с их строками PRIOR. В идеале исходная таблица имеет первичный ключ, который мы можем использовать в качестве якоря; В вашей опубликованной таблице отсутствует один из них, но вместо этого мы можем заменить ROWID.
select startdate + (level-1) as gendate
from t23
connect by level <= (enddate-startdate)+1
and t23.rowid = prior t23.rowid
and prior sys_guid() is not null
order by 1
and prior sys_guid() is not null
не интуитивно понятен, но он предотвращает ORA-01436: CONNECT BY loop in user data
.
Вот демонстрация SQL Fiddle .