DATEPART (Transact-SQL)

Gibt eine ganze Zahl zurück, die den angegebenen datepart-Wert des angegebenen date-Werts darstellt.

Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

DATEPART ( datepart , date )

Argumente

  • datepart
    Der Teil von date (ein Datum oder ein Uhrzeitwert), für den ein integer zurückgegeben wird. In der folgenden Tabelle sind alle gültigen datepart-Argumente aufgelistet. Benutzerdefinierte Variablenentsprechungen sind nicht gültig.

    datepart

    Abkürzungen

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

    microsecond

    mcs

    nanosecond

    ns

    TZoffset

    tz

    ISO_WEEK

    isowk, isoww

  • date
    Ein Ausdruck, der in einen time-Wert, date-Wert, smalldatetime-Wert, datetime-Wert, datetime2-Wert oder datetimeoffset-Wert aufgelöst werden kann. date kann ein Ausdruck, ein Spaltenausdruck, eine benutzerdefinierte Variable oder ein Zeichenfolgenliteral sein.

    Verwenden Sie vierstellige Jahreszahlen, um Mehrdeutigkeit zu vermeiden. Informationen zu zweistelligen Jahreszahlen finden Sie unter Konfigurieren der Serverkonfigurationsoption Umstellungsjahr für Angaben mit zwei Ziffern.

Rückgabetyp

int

Rückgabewert

Jedes datepart-Argument und die zugehörigen Abkürzungen geben denselben Wert zurück.

Der Rückgabewert hängt von der Sprachumgebung ab, die durch SET LANGUAGE und durch die Konfigurieren der Serverkonfigurationsoption Standardsprache der Anmeldung festgelegt wurde. Wenn date ein Zeichenfolgenliteral für einige Formate darstellt, hängt der Rückgabewert von dem Format ab, das mit SET DATEFORMAT festgelegt wurde. SET DATEFORMAT wirkt sich nicht auf den Rückgabewert aus, wenn das Datum ein Spaltenausdruck für Daten vom Typ Datum oder Uhrzeit darstellt.

In der folgenden Tabelle werden alle datepart-Argumente mit den entsprechenden Rückgabewerten für die Anweisung SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') aufgelistet. Der Datentyp des date-Arguments ist datetimeoffset(7). Der nanosecond datepart-Rückgabewert verfügt über 9 Dezimalstellen (,123456700), wobei die letzten beiden Stellen immer 00 sind.

datepart

Rückgabewert

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

datepart-Argumente des Typs week und weekday

Wenn für datepart entweder week (wk, ww) oder weekday (dw) angegeben wurde, hängt der Rückgabewert von dem Wert ab, der durch SET DATEFIRST festgelegt wurde.

Der 1. Januar eines Jahres definiert die Anfangszahl für week datepart, z. B. DATEPART (wk, 'Jan 1, xxxx') = 1, wobei xxxx ein beliebiges Jahr ist.

In der folgenden Tabelle wird für jedes SET DATEFIRST-Argument der Rückgabewert von week und weekday datepart für "2007-04-21" aufgelistet. Der 1. Januar ist im Jahr 2007 ein Montag. Der 21. April ist im Jahr 2007 ein Samstag. SET DATEFIRST 7 (Sonntag) ist die Standardeinstellung für Englisch (USA). Englisch.

SET DATEFIRST

Argument

week

hat zurückgegeben

weekday

hat zurückgegeben

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

datepart-Argumente des Typs year, month und day

Die für DATEPART (year, date), (month, date) und DATEPART (day, date) zurückgegebenen Werte entsprechen den jeweiligen Rückgabewerten der Funktionen YEAR, MONTH und DAY.

ISO_WEEK datepart

ISO 8601 schließt das ISO-Wochensystem zur Nummerierung von Wochen ein. Die einzelnen Wochen werden mit dem Jahr verknüpft, in dem Donnerstag auftritt. Beispielsweise startet die Woche 1 im Jahr 2004 (2004W01) am 29. Dezember 2003 (Montag) und endet am 4. Januar 2004 (Sonntag). Die höchste Wochennummer kann in einem Jahr 52 oder 53 sein. Diese Art der Nummerierung wird in der Regel in europäischen Ländern bzw. Regionen verwendet. In anderen Ländern wird sie eher selten angewendet.

Das Nummerierungssystem in anderen Ländern oder Regionen entspricht möglicherweise nicht dem ISO-Standard. Es gibt mindestens sechs Möglichkeiten, wie in der folgenden Tabelle dargestellt.

Erster Tag der Woche

Erste Woche im Jahr enthält

Doppelt zugewiesene Wochen

Verwendet von/in

Sonntag

1. Januar

Erster Samstag

1–7 Tage im Jahr

Ja

USA

Montag

1. Januar

Erster Sonntag

1–7 Tage im Jahr

Ja

Die meisten Länder Europas und Großbritannien

Montag

4. Januar

Erster Donnerstag

4–7 Tage im Jahr

Nein

ISO 8601, Norwegen und Schweden

Montag

7. Januar

Erster Montag

7 Tage im Jahr

Nein

Mittwoch

1. Januar

Erster Dienstag

1–7 Tage im Jahr

Ja

Samstag

1. Januar

Erster Freitag

1–7 Tage im Jahr

Ja

TZoffset

TZoffset (tz) wird als Anzahl von Minuten (signiert) zurückgegeben. Die folgende Anweisung gibt ein Zeitzonenoffset von 310 Minuten zurück.

SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

Wenn das datepart-Argument TZoffset (tz) lautet und das date-Argument nicht dem Datentyp datetimeoffset entspricht, wird NULL zurückgegeben.

date-Argument des Typs smalldatetime

Wenn date den Wert smalldatetime aufweist, werden Sekunden als 00 zurückgegeben.

Zurückgeben des Standardwerts für ein datepart-Argument, das nicht in einem date-Argument enthalten ist

Enthält der Datentyp im date-Argument keine Angabe zu datepart, wird für datepart nur der Standardwert zurückgegeben, wenn für date ein Literal angegeben ist.

Beispielsweise wird bei Jahr-Monat-Tag für jeden date-Datentyp standardmäßig der Wert 1900-01-01 angegeben. Die folgende Anweisung verfügt über datepart-Argumente für datepart, ein time-Argument für date und gibt 1900, 1, 1, 1, 2 zurück.

SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');

Wenn date als Variable oder Tabellenspalte angegeben ist und der Datentyp für diese Variable oder Spalte nicht über das angegebene datepart verfügt, wird der Fehler 9810 zurückgegeben. Im folgenden Codebeispiel tritt ein Fehler auf, weil das year-Datumsteil für den für die @t-Variable deklarierten time-Datentyp nicht gültig ist.

DECLARE @t time = '12:10:30.123'; 
SELECT DATEPART(year, @t); 

Sekundenbruchteile

Die folgenden Anweisungen verdeutlichen, wie Sekundenbruchteile zurückgegeben werden:

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700

Hinweise

DATEPART kann in den Klauseln WHERE, HAVING, GROUP BY und ORDER BY der SELECT-Liste verwendet werden.

In SQL Server 2012 wandelt DATEPART Zeichenfolgenliterale implizit als datetime2-Typ um. Daher unterstützt DATEPART das Format YDM nicht, wenn das Datum als Zeichenfolge übergeben wird. Sie müssen die Zeichenfolge explizit in den datetime-Typ oder smalldatetime-Typ umwandeln, um das YDM-Format zu verwenden.

Beispiele

Das folgende Beispiel gibt das Basisjahr zurück. Das Basisjahr ist für Datumsberechnungen nützlich. Im Beispiel wird das Datum in Form einer Zahl angegeben. Beachten Sie, dass SQL Server den Wert 0 als 1. Januar 1900 interpretiert.

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)