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

标签 sql postgresql date week-number

我一直在对按 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/

相关文章:

php - 检索特定行的 SQL 问题

javascript - 根据预定的 GMT 更改显示文本

javascript - 需要解决 Firefox Date() 错误

SQL Case When 语句计算多个表上的行数

mysql - 连接两个表中的多个列

mysql - 使用while循环更新多行SQL

ruby-on-rails - $PATH 混淆 OSX Lion 上的 Postgres 和 Rails

java - PuppetDB 和 PostgreSQL - 不支持事务隔离级别 4

sql - 在 PostgreSQL 中交换具有 UNIQUE 约束的列的记录值

javascript - 客户端在服务器上的本地时间