create table t (id int, dt text);
insert into t values (1, '2015-W02'), (2, '2015-W08'), (3, '2015-W21');
with days as
(
select dt,
extract(dow from dt) dow,
extract(week from dt) wk,
extract(year from dt) yr
from generate_series('2015-01-01'::timestamp,
'2015-12-31'::timestamp,
'1 day'::interval) dt
)
select
*
from
t
join
days
on substring(t.dt, 1, 4)::int = days.yr
and substring(t.dt, 7, 2)::int = days.wk
where
days.dow = 6; --saturdays only
如果该周数标识ISO 周(= 周从星期一开始,第一周属于“较大”部分所在的年份),您可以使用
to_date()
请注意,这将返回该周的星期一,因为这是 ISO 周的定义方式。
为了处理日期,我建议使用日历表,您可以在 google 上找到一些脚本来生成您自己的日历表。
在这种情况下,我使用 CTE 为 2015 年及以下示例数据生成一系列日期:
db<>在这里摆弄