我正试图从某一天开始获取一年中的周数我检查了一下堆栈,但很困惑。
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