Postgresql周数与Jan和Dec日期相同

时间:2016-10-23 01:33:22

标签: postgresql timestamp week-number

在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月的日期周数相同。有人可以解释这里的逻辑吗?

1 个答案:

答案 0 :(得分:2)

我认为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   与周一起获得一致的结果。