PostgreSQL 为日期 2021-01-01

问题描述

如果我运行以下查询,我会得到非常奇怪的结果。我从 1 月 4 日星期一开始获得 第 1 周(正如预期的那样)。我在一组查询中使用它来计算每周的 Covid 病例数,这完全毁了我的一天:/

SELECT date_part('week','2021-01-01'::date) as week,date_part('year','2021-01-01'::date) as year;
week year
53   2021

版本:Postgresql 12.3 on x86_64-pc-linux-musl,由 gcc (Alpine 9.3.0) 9.3.0 编译,64 位

解决方法

As documented in the manual 'week' 使用 ISO definition 作为第一周。

要获得相应的 (ISO) 年份,请使用 'isoyear'

SELECT date_part('week','2021-01-01'::date) as week,date_part('isoyear','2021-01-01'::date) as year;

以上正确 returns 53,2020