Postgres - конвертировать диапазон дат в отдельный месяц
Я нашел аналогичную помощь, но проблема была более сложной, я хорошо разбираюсь в основах SQL и вычеркиваю здесь. Я получил несколько столбцов a, b, c, startdate, enddate, и мне нужно разбить эти данные на несколько строк в зависимости от того, сколько месяцев находится в пределах диапазона.
Например: a,b,c,1/1/2015, 3/15,2015 станет:
a,b,c,1/1/2015,value_here_doesnt_matter
a,b,c,2/1/2015,value_here_doesnt_matter
a,b,c,3/1/2015,value_here_doesnt_matter
Не имеет значения, когда дата начала или окончания - в определенный день, важны только месяц и год. Поэтому, если в диапазон входит какой-либо день в данном месяце, я бы хотел вывести начальные дни для каждого месяца в диапазоне, причем 1-й день является днем по умолчанию.
Могу ли я посоветовать, в каком направлении начинать? Я пытаюсь выполнить generate_series, но не уверен, является ли это правильным подходом или как заставить его работать с сохранением согласованности данных в первых нескольких произвольных столбцах.
1 ответ
Я думаю generate_series
это путь Не зная, как выглядят остальные ваши данные, я бы начал с чего-то вроде этого:
select
a, b, c, generate_series(startdate, enddate, interval '1 month')::date
from
my_table