2016-10-23 44 views
1

PostgreSQLでは、タイムスタンプを週番号に変換しようとしています。Postgresql 1月と12月の日付で同じ週番号

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月の日付の週番号が同じであることに驚いています。誰かがここで論理を説明できますか?

答えて

2

私はdocumentationはかなりよく、この説明だと思う:

年のISO 8601の週番号付きの週の数を。 定義では、ISO週は月曜日から始まり、週の初めの週は にはその年の1月4日が含まれます。言い換えれば、最初の木曜日の はその年の1週目です。下旬〜12月のために前年の第52または第53週の一部、および すべき早1月のISO週番号付けシステムでは

、それが可能である 日付は最初の週の一部であることをさかのぼり翌年。 たとえば、2005-01-01は2004年の第53週の一部であり、 2006-01-01は2005年の第52週の一部ですが、2012-12-31は の第1週の一部です一貫性のある結果を得るには、isoyear フィールドをweekと一緒に使用することをお勧めします。

関連する問題