Kategorien:

Datums- und Uhrzeitfunktionen

YEAR* / DAY* / WEEK* / MONTH / QUARTER

Extrahiert die entsprechende Datumskomponente aus einem Datum oder einem Zeitstempel.

Diese Funktionen sind Alternativen zur Verwendung der Funktion DATE_PART (oder EXTRACT) mit dem entsprechenden Datumsteil (siehe Unterstützte Datums- und Zeitabschnitte).

Siehe auch:

HOUR / MINUTE / SECOND

Syntax

YEAR( <date_or_timestamp_expr> )

YEAROFWEEK( <date_or_timestamp_expr> )
YEAROFWEEKISO( <date_or_timestamp_expr> )

DAY( <date_or_timestamp_expr> )

DAYOFMONTH( <date_or_timestamp_expr> )
DAYOFWEEK( <date_or_timestamp_expr> )
DAYOFWEEKISO( <date_or_timestamp_expr> )
DAYOFYEAR( <date_or_timestamp_expr> )

WEEK( <date_or_timestamp_expr> )

WEEKOFYEAR( <date_or_timestamp_expr> )
WEEKISO( <date_or_timestamp_expr> )

MONTH( <date_or_timestamp_expr> )

QUARTER( <date_or_timestamp_expr> )

Nutzungshinweise

Funktionsname

Datumsteil extrahiert aus Eingabedatum/Zeitstempel

Mögliche Werte

YEAR

Jahr

Jedes gültige Jahr (z. B. 2017)

YEAROFWEEK [1]

Jahr, zu dem die extrahierte Woche gehört

Jedes gültige Jahr (z. B. 2017)

YEAROFWEEKISO

Wie YEAROFWEEK, außer dass ISO-Semantik verwendet wird

Jedes gültige Jahr (z. B. 2017)

DAY , DAYOFMONTH

Tag (Zahl) des Monats

1 bis 31

DAYOFWEEK [1]

Tag (Zahl) der Woche

0 bis 7

DAYOFWEEKISO

Wie DAYOFWEEK, außer dass ISO-Semantik verwendet wird

1 bis 7

DAYOFYEAR

Tag (Zahl) des Jahres

1 bis 366

WEEK, WEEKOFYEAR [1]

Woche (Zahl) des Jahres

1 bis 54

WEEKISO

Wie WEEK, außer dass ISO-Semantik verwendet wird

1 bis 53

MONTH

Monat (Zahl) des Jahres

1 bis 12

QUARTER

Quartal (Zahl) des Jahres

1 bis 4

[1] Ergebnisse, die von den Werten für die Sitzungsparameter WEEK_OF_YEAR_POLICY und/oder WEEK_START vorgegeben werden.

Einzelheiten zur ISO-Semantik und zu den Parametern finden Sie unter Kalenderwochen und Wochentage.

Beispiele

Im Folgenden wird die Verwendung der Funktionen YEAR, MONTH, DAY, DAYOFWEEK, DAYOFYEAR und QUARTER veranschaulicht:

SELECT 
       '2013-05-08T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       YEAR(tstamp) AS "YEAR", 
       QUARTER(tstamp) AS "QUARTER OF YEAR",
       MONTH(tstamp) AS "MONTH", 
       DAY(tstamp) AS "DAY",
       DAYOFMONTH(tstamp) AS "DAY OF MONTH",
       DAYOFYEAR(tstamp) AS "DAY OF YEAR";
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
| TSTAMP                  | YEAR | QUARTER OF YEAR | MONTH | DAY | DAY OF MONTH | DAY OF YEAR |
|-------------------------+------+-----------------+-------+-----+--------------+-------------|
| 2013-05-08 23:39:20.123 | 2013 |               2 |     5 |   8 |            8 |         128 |
+-------------------------+------+-----------------+-------+-----+--------------+-------------+

Im Folgenden wird die Verwendung der Funktionen WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK und YEAROFWEEKISO veranschaulicht. Der Sitzungsparameter WEEK_OF_YEAR_POLICY gibt an, dass die erste Woche des Jahres jene Woche ist, die den 1. Januar des Jahres enthält.

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 1;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       WEEK(tstamp) AS "WEEK",
       WEEKISO(tstamp) AS "WEEK ISO",
       WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
       YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
       YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP                  | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 |    1 |       53 |            1 |         2016 |             2015 |
+-------------------------+------+----------+--------------+--------------+------------------+

Im Folgenden wird auch die Verwendung der Funktionen WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK und YEAROFWEEKISO veranschaulicht. Der Sitzungsparameter WEEK_OF_YEAR_POLICY gibt an, dass die erste Woche des Jahres jene erste Woche des Jahres ist, die mindestens 4 Tage aus diesem Jahr enthält. (So wird beispielsweise die Woche vom 26. Dezember 2010 bis zum 1. Januar 2011 als letzte Woche des Jahres 2010 und nicht als erste Woche des Jahres 2011 betrachtet, obwohl sie den 1. Januar 2011 enthält, da weniger als die Hälfte der Woche im Jahr 2011 liegt.)

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 0;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       WEEK(tstamp) AS "WEEK",
       WEEKISO(tstamp) AS "WEEK ISO",
       WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
       YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
       YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP                  | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 |   53 |       53 |           53 |         2015 |             2015 |
+-------------------------+------+----------+--------------+--------------+------------------+

Im Folgenden wird die Verwendung der Funktionen DAYOFWEEK und DAYOFWEEKISO veranschaulicht. Der Sitzungsparameter WEEK_START gibt an, dass die Woche am Sonntag beginnt.

ALTER SESSION SET WEEK_START = 7;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           7 |               6 |
+-------------------------+-------------+-----------------+

Im Folgenden wird die Verwendung der Funktionen DAYOFWEEK und DAYOFWEEKISO veranschaulicht. Der Sitzungsparameter WEEK_START gibt an, dass die Woche am Montag beginnt.

ALTER SESSION SET WEEK_START = 0;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           6 |               6 |
+-------------------------+-------------+-----------------+

Weitere Beispiele finden Sie unter Verwenden von Datumsangaben und Zeitstempeln.

Ausführlichere Beispiele für die wochenbezogenen Funktionen (DAYOFWEEK, WEEK, WEEKOFYEAR, YEAROFWEEK usw.) finden Sie unter Kalenderwochen und Wochentage.