从日期中提取周数 Postgres

53

我希望提取出本周的周数:

2015-52

从日期格式为:

2015-12-27

我该如何在PostgreSQL中执行此操作?

我的周是从星期一到星期日计算的。

3个回答

94
要在单个字符值中获取年份和周数,请使用to_char()函数。
select to_char(current_date, 'IYYY-IW');

IW 返回根据ISO标准定义的年和周数,而 IYYY 则返回相应的年份(可能是上一年)。

如果需要作为数字获取年份和周数,请使用 extract 函数。

select extract('isoyear' from current_date) as year, 
       extract('week' from current_date) as week;

1
哇,修正一个三年前的答案做得好 :) 我没想到会有回应,只是想留下一些东西给下一个看到这个页面的人。 - Feenaboccles

6
我已经这样做了。
extract(week from cast(current_date as date))
extract(year from cast(current_date as date))

4
表达式 cast(current_date as date) 可以简化为 current_date - user330315

4
与 @a_horse_with_no_name 相同,但要小心 current_date 在新年的第0周(即上一年的最后一周)内时,extract('isoyear' from current_date) 和 extract('year' from current_date) 之间存在一些细微差别,特别是当您同时提取 week 时。
例如:
以下输出为 2020 而非 2021。
select EXTRACT('isoyear' from to_timestamp('2021-01-02 17:37:27', 'YYYY-MM-DD hh24:mn:ss')) as year

以下是输出结果:2021
select EXTRACT('year' from to_timestamp('2021-01-02 17:37:27', 'YYYY-MM-DD hh24:mn:ss')) as year

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接