在PostgreSQL中提取匹配年份的星期数

use*_*342 3 postgresql

在postgresql中extract(week from '2014-12-30'::timestamp)给出了2015年的第1周。如何提取与周号相对应的关联年份?使用extract(year ...给出2014

Kri*_*ján 5

由于week是ISO定义的星期,因此您需要isoyear

#= select extract(isoyear from '2014-12-30'::timestamp);
 date_part
-----------
      2015
(1 row)
Run Code Online (Sandbox Code Playgroud)

文档

根据定义,ISO周从星期一开始,一年的第一周包含该年的1月4日。换句话说,一年的第一个星期四在该年的第1周。

在ISO周编号系统中,一月初的日期可能是上一年的第52或53周的一部分,而十二月末的日期可能是下一年的第一周的一部分。例如,2005-01-01是2004年第53周的一部分,而2006-01-01是2005年第52周的一部分,而2012-12-31是2013年第一周的一部分。建议将isoyear字段与week一起使用,以获得一致的结果。