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.
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 */