我一直在对按 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');
我最担心的是我遗漏了这种差异的一些充分理由......
最佳答案
As documented in the manual 'WW'
返回
week number of year (1-53) (the first week starts on the first day of the year)
(强调我的)
提取(周...)
always returns the ISO week .如果您希望 to_char()
也返回 ISO 周,则需要改用 'IW'
。如果你还想用 to_char()
显示年份,你应该使用 'IYYY'
而不是 'YYYY'
,它等同于 提取物(等年...)
关于sql - Postgres 日期和提取周数 - 不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810474/