2016-08-11 9 views
0

postgresqlでISOYEARの開始日を取得する方法は?Postgresql ISOYEAR最初の日付

たとえば、私は日付が2012-01-01、isoyearが2011、isoyearが2011-01-03で始まり、2012-01-01で終了します。

isoyearを取得する方法はいくつかありますが、iso yearが始まる日付を取得する方法はわかりません。

select extract(isoyear from '01.01.2012'::date) 

select to_char('01.01.2012'::date,'IYYY') 
+0

が、これはあなたが探しているものですか? "各ISO 8601の週番号は、1月4日を含む週の月曜日から始まります。したがって、ISOの年はグレゴリオ暦の年と異なる場合があります。詳細は、欄を参照してください。 これは8.3より前のPostgreSQLリリースでは使用できません。 Ref https://www.postgresql.org/docs/current/static/functions-datetime.html – pnorton

答えて

2

「ISOの年」の最初の「ISOの日」に変換し、それを確認する:

=> SELECT to_date('2011-0001', 'IYYY-IDDD'); 
    to_date 
------------ 
2011-01-03 
+0

ちょうどFYI:書式設定フィールドはIDDD(4文字)と呼ばれますが、3桁しか必要ありません。 postgres docsは '001'から' 366'までの値を取ります。しかし、良い解決策! – dcsohl

関連する問題