我想在我的表格中添加一列,根据 Postgresql 上的数据时间显示数据中的周数



我在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)

最新更新