2016-08-11 2 views
0

Wie bekomme ich das Startdatum von ISOYEAR in postgresql?Postgresql ISOYEAR erstes Datum

Zum Beispiel habe ich ein Datum 2012-01-01, isoyear ist 2011 und es isoyear beginnt am 2011-01-03 und endet am 01.01.2012.

Es gibt verschiedene Möglichkeiten, um isoyear zu bekommen, aber ich habe keine Ahnung, wie man das Datum bekommt, an dem das Iso-Jahr beginnt.

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

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

Ist das, was Sie suchen? "Jedes Wochennummernjahr der ISO 8601 beginnt mit dem Montag der Woche, der den 4. Januar enthält, also kann das ISO-Jahr Anfang Januar oder Ende Dezember vom Gregorianischen Jahr abweichen. Weitere Informationen finden Sie im Feld Woche. Dies Feld ist in PostgreSQL-Versionen vor 8.3 nicht verfügbar. " Ref https://www.postgresql.org/docs/current/static/functions-datetime.html – pnorton

Antwort

2

es Stellen Sie die erste „ISO Tag“ der „ISO Jahr“ zu konvertieren:

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

Nur eine FYI: Das Formatierungsfeld heißt 'IDDD' (vier Zeichen), aber Sie brauchen nur drei Ziffern; Postgres-Dokumente sagen, dass es Werte von '001' bis' 366' nimmt. Nette Lösung, obwohl! – dcsohl