Postgres日期和提取周数 - 结果不一致

问题描述 投票:0回答:1

我一直在按照ISO周分组的Postgres(v10.6)数据库中对数据进行一些统计分析,并且偶然发现周数的返回方式明显不一致,例如:

SELECT TO_CHAR(DATE_TRUNC('week',TIMESTAMP '2019-02-14'),'WW');

返回06

然而:

SELECT EXTRACT(WEEK FROM TIMESTAMP '2019-02-14');

返回7

为什么存在差异/其中一个是正确的?我怀疑后者,因为PHP中的等效操作也返回07:

$dte = new DateTime('2019-02-14');
echo $dte->format('W');

我最担心的是,这种差异有一些很好的理由我错过了......

sql postgresql date week-number
1个回答
3
投票

As documented in the manual 'WW'回归

周数(1-53)(第一周从一年的第一天开始)

(强调我的)

extract(week ...) always returns the ISO week。如果你想让to_char()也返回ISO周,你需要使用'IW'代替。如果你还想用to_char()显示年份,你应该使用'IYYY'而不是'YYYY',相当于extract(isoyear ...)

© www.soinside.com 2019 - 2024. All rights reserved.