首页 > 解决方案 > 为什么 2017-01-01 的日期部分周返回 52?

问题描述

运行查询按预期select date_part('week','2016-12-31'::date)返回52,因为这是 2016 年的最后一周。

运行查询按预期select date_part('week','2017-01-02'::date)返回1,因为这是 2017 年的第一周。

但是,运行查询select date_part('week','2017-01-01'::date)返回52错误。

这与 2017-01-01 是星期天有关吗?

标签: sqlpostgresqldate

解决方案


这在文档中进行了解释。 'week'基于 ISO 周,即:

星期

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


推荐阅读