我在Postgresql上的一个表中有一个日期字段。我想添加另一列显示每个日期的周数。但是周数应基于数据的时间间隔。我的意思是,如果数据从"2018-05-02"开始,则第 1 周应涵盖"2018-05-02"和"2018-05-08"之间的天数。
date_trunc函数不适用于这种情况。
您应该能够通过减去最小日期并提取天数来计算:
create table test (a timestamp);
insert into test values ('2019-01-01T00:00:00');
insert into test values ('2019-02-01T00:00:00');
select a, floor(extract(days from (a - (select min(a) from test)))/7) as week
FROM test;
a | week
---------------------+------
2019-01-01 00:00:00 | 0
2019-02-01 00:00:00 | 4
insert into test values ('2018-01-01T00:00:00');
select a, floor(extract(days from (a - (select min(a) from test)))/7) as week
FROM test;
a | week
---------------------+------
2019-01-01 00:00:00 | 52
2019-02-01 00:00:00 | 56
2018-01-01 00:00:00 | 0
(3 rows)