从某一天开始的周日(2021年1月1日)在研究生



我正试图从某一天开始获取一年中的周数我检查了一下堆栈,但很困惑。

SELECT EXTRACT(WEEK FROM TIMESTAMP '2021-01-01'),
extract('year' from TIMESTAMP '2021-01-01')

产量为53|2021

我希望它是2021年1月

我理解isoweek的原理,但我希望今年从2021年1月1日开始

目的是使用从这一天开始的时间间隔来确定周数

Week N0| End Date
1 | 01-01-2021
2 | 01-08-2021
5 | 01-29-2021
...

这确实是一种确定周数的奇怪方法,但最终它是一个简单的数学运算:自1月以来的天数第一次除以7。

您可以为此创建一个函数:

create function custom_week(p_input date)
returns int
as
$$
select (p_input - date_trunc('year', p_input)::date) / 7 + 1;
$$
language sql
immutable;

所以这个:

select date, custom_week(date)
from (
values 
(date '2021-01-01'), 
(date '2021-01-08'), 
(date '2021-01-29')
) as v(date)

产生

date       | custom_week
-----------+------------
2021-01-01 |           1
2021-01-08 |           2
2021-01-29 |           5

最新更新