我正在尝试根据当前日期生成动态日期。我想使用generate_series()填充开始日期和结束日期之间的日期(间隔= 1天)。
结束日期是第4年的9/30。例如,
select generate_series(
to_date(cast(start_date as text), 'yyyy-mm-dd'),
to_date(concat(extract(year from to_date(cast(start_date as text), 'yyyy-mm-dd')+3),'-','09','-', 30), 'yyyy-mm-dd'),
'1 day'
)
from (
select case
when extract(month from current_date) <= 10 then concat(extract(year from current_date) -1,'-',10,'-', '01')
when extract(month from current_date) > 10 then concat(extract(year from current_date),'-',10,'-', '01')
end) as start_date
错误:“ yyyy”的值“((202)”无效
详细信息:值必须是整数。
SQL状态:22007
它抱怨年份不是整数。我需要修改哪些部分才能运行此查询?
答案 0 :(得分:0)
select case
when date_trunc('month', current_date) ::date < make_date(extract(year from current_date) ::int, 10, 1) then
generate_series(make_date((extract(year from current_date) - 1) ::int, 10, 1)
,make_date((extract(year from current_date) + 2) ::int, 10, 1) - 1
,'1 day') ::date
else
generate_series(make_date(extract(year from current_date) ::int, 10, 1)
,make_date((extract(year from current_date) + 3) ::int, 10, 1) - 1
,'1 day') ::date
end as dt;
您可以在以下位置使用current_date代替:current_date => '11 / 1/2019':: date或'05 / 22/2019':: date