Freigeben über


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 die zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitfunktionen (Transact-SQL). Informationen und Beispiele, die für alle Datums- und Uhrzeitdatentypen und zugehörige Funktionen gelten, finden Sie unter Verwenden von Datums- und Zeitdaten.

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 der Werte time, date, smalldatetime, datetime, datetime2 oder datetimeoffset aufgelöst werden kann. Bei date kann es sich um einen Ausdruck, einen Spaltenausdruck, eine benutzerdefinierte Variable oder ein Zeichenfolgenliteral handeln.

    Verwenden Sie vierstellige Jahreszahlen, um Mehrdeutigkeit zu vermeiden. Informationen zu zweistelligen Jahreszahlen finden Sie unter two digit year cutoff (Option).

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 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 nanoseconddatepart-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 weekdatepart. Beispiel: DATEPART (wk, 'Jan 1, xxxx') = 1, wobei xxxx ein beliebiges Jahr ist.

In der folgenden Tabelle werden für jedes SET DATEFIRST-Argument der Rückgabewert von week und weekdaydatepart 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).

SET DATEFIRST

Argument

week

zurückgegeben

weekday

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

4–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 der Standardwert zurückgegeben.

Beispielsweise wird bei Jahr-Monat-Tag für jeden date-Datentyp standardmäßig der Wert 01900-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');

Bei Stunde-Minute-Sekunde wird für den time-Datentyp standardmäßig der Wert 00:00:00 angegeben. Die folgende Anweisung verfügt über timepart-Argumente für datepart, ein date-Argument für date und gibt 0, 0, 0 zurück.

SELECT DATEPART(hour, '2007-06-01')
    ,DATEPART(minute, '2007-06-01')
    ,DATEPART(second, '2007-06-01');

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 2008 wandelt DATEPART Zeichenfolgenliterale implizit als datetime2-Typen um. Dies bedeutet, dass DATEPART das YDM-Format nicht mehr unterstützt, wenn das Datum als Zeichenfolge übergeben wird. Sie müssen die Zeichenfolge explizit in einen datetime- oder smalldatetime-Typ umwandeln, wenn das YDM-Format verwendet werden soll.

Beispiele

Das folgende Beispiel gibt das Basisjahr zurück. Das Basisjahr ist hilfreich für Datumsberechnungen. 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