【问题标题】:Postgresql Week number same for Jan and Dec dates1 月和 12 月日期的 Postgresql 周数相同
【发布时间】:2016-10-23 01:33:22
【问题描述】:

在 PostgreSQL 中,我尝试使用下面的查询将时间戳转换为周数。

select user_id, 
time_stamp, 
date(time_stamp), 
EXTRACT(YEAR FROM time_stamp) as Year, 
EXTRACT(MONTH FROM time_stamp) as Month, 
EXTRACT(WEEK FROM time_stamp) as Week
from user_engagement

 user_id |     time_stamp      |    date    | year | month | week 
---------+---------------------+------------+------+-------+------
    6282 | 2013-01-01 14:29:35 | 2013-01-01 | 2013 |     1 |    1
    6282 | 2013-01-02 14:29:35 | 2013-01-02 | 2013 |     1 |    1
    6282 | 2013-12-30 14:29:35 | 2013-12-30 | 2013 |    12 |    1
    6282 | 2013-12-31 14:29:35 | 2013-12-31 | 2013 |    12 |    1

我很惊讶地发现 2013 年 1 月和 12 月日期的周数相同。有人能解释一下这里的逻辑吗?

【问题讨论】:

    标签: postgresql timestamp week-number


    【解决方案1】:

    我认为documentation 很好地解释了这一点:

    一周

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

    在 ISO 周编号系统中,1 月初是可能的 日期为上一年第 52 周或第 53 周的一部分,并且 将 12 月下旬的日期作为下一年第一周的一部分。 例如,2005-01-01 是 2004 年第 53 周的一部分,并且 2006-01-01 是 2005 年第 52 周的一部分,而 2012-12-31 是 2013年第一周的一部分。建议使用isoyear 字段与星期一起获得一致的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多