DATEPART (Transact-SQL)DATEPART (Transact-SQL)

DIESES THEMA GILT FÜR: jaSQL Server (ab 2008)jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Gibt eine ganze Zahl, die den angegebenen darstellt Datepart des angegebenen Datum.Returns an integer that represents the specified datepart of the specified date.

Eine Übersicht über alle Transact-SQLTransact-SQL Datums-und Uhrzeitdatentypen und Funktionen finden Sie unter Datums- und Uhrzeitdatentypen und-Funktionen ( Transact-SQL ) .For an overview of all Transact-SQLTransact-SQL date and time data types and functions, see Date and Time Data Types and Functions (Transact-SQL).

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

DATEPART ( datepart , date )  

ArgumenteArguments

datepartdatepart
Ist der Teil des Datum (ein Wert für Datum oder Uhrzeit) für die ein Ganzzahl zurückgegeben werden.Is the part of date (a date or time value) for which an integer will be returned. Die folgende Tabelle enthält alle gültigen Datepart Argumente.The following table lists all valid datepart arguments. Benutzerdefinierte Variablenentsprechungen sind nicht gültig.User-defined variable equivalents are not valid.

datepartdatepart AbkürzungenAbbreviations
Jahryear Yy, JJJJyy, yyyy
Quartalquarter Qq, qqq, q
Monatmonth mm, mmm, m
DayOfYeardayofyear dy, ydy, y
Tagday Dd, ddd, d
Wocheweek wk, weltweitwk, ww
Wochentagweekday Data Warehousedw
Stundehour hhhh
Minuteminute Mi, nmi, n
Sekundesecond ss, sss, s
Millisekundemillisecond MSms
in Mikrosekundenmicrosecond MCSmcs
Nanosekundennanosecond Notification Servicesns
TZoffsetTZoffset Tztz
ISO_WEEKISO_WEEK Isowk, Isowwisowk, isoww

Datumdate
Ist ein Ausdruck, der in aufgelöst werden kann ein Zeit, Datum, Smalldatetime, "DateTime", datetime2, oder "DateTimeOffset" Wert.Is an expression that can be resolved to a time, date, smalldatetime, datetime, datetime2, or datetimeoffset value. Datum können einen Ausdruck, Spaltenausdruck, eine benutzerdefinierte Variable oder Zeichenfolge literal sein.date can be an expression, column expression, user-defined variable, or string literal.
Um Mehrdeutigkeiten zu vermeiden, sollten Sie vierstellige Jahreszahlen verwenden.To avoid ambiguity, use four-digit years. Informationen zu zweistelligen Jahreszahlen finden Sie unter konfigurieren two Digit Year cutoff Server Configuration Option.For information about two digits years, see Configure the two digit year cutoff Server Configuration Option.

RückgabetypReturn Type

intint

RückgabewertReturn Value

Jede Datepart und zugehörigen Abkürzungen geben denselben Wert zurück.Each datepart and its abbreviations return the same value.

Der Rückgabewert hängt von der sprachumgebung Festlegung mithilfe von SET LANGUAGE und durch die Konfigurieren der Serverkonfigurationsoption Standardsprache der Anmeldung.The return value depends on the language environment set by using SET LANGUAGE and by the Configure the default language Server Configuration Option of the login. Wenn Datum ist eine Zeichenfolge Zeichenfolgenliteral für einige Formate, der Rückgabewert hängt von dem mit angegebenen Format SET DATEFORMAT.If date is a string literal for some formats, the return value depends on the format specified by using SET DATEFORMAT. SET DATEFORMAT wirkt sich nicht auf den Rückgabewert aus, wenn das Datum ein Spaltenausdruck für Daten vom Typ Datum oder Uhrzeit darstellt.SET DATEFORMAT does not affect the return value when the date is a column expression of a date or time data type.

Die folgende Tabelle enthält alle Datepart -Argumente mit den entsprechenden Rückgabewerten für die Anweisung SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10').The following table lists all datepart arguments with corresponding return values for the statement SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Der Datentyp der Datum Argument ist datetimeoffset(7).The data type of the date argument is datetimeoffset(7). Die NanosekundenDatepart -Rückgabewert verfügt über 9 Dezimalstellen (. 123456700) und die letzten beiden Stellen immer 00.The nanoseconddatepart return value has a scale of 9 (.123456700) and the last two positions are always 00.

datepartdatepart RückgabewertReturn value
Jahr, JJJJ, JJyear, yyyy, yy 20072007
Quartal, Qq, qquarter, qq, q 44
Monat, mm, mmonth, mm, m 1010
DayOfYear dy, ydayofyear, dy, y 303303
Day "," Dd "," dday, dd, d 3030
Woche "," wk "," ww-week, wk, ww 4545
Wochentag, dwweekday, dw 11
Stunde, "hh"hour, hh 1212
Minute, nminute, n 1515
Sekunde "," ss "," ssecond, ss, s 3232
Millisekunden, msmillisecond, ms 123123
in Mikrosekunden, die mcsmicrosecond, mcs 123456123456
Nanosekunden, nsnanosecond, ns 123456700123456700
TZoffset tzTZoffset, tz 310310

Week und Weekday Datepart-ArgumenteWeek and weekday datepart arguments

Wenn Datepart ist Woche (wk, weltweit) oder Wochentag (dw), der zurückgegebene Wert hängt vom Wert ab, der durch ist SET DATEFIRST.When datepart is week (wk, ww) or weekday (dw), the return value depends on the value that is set by using SET DATEFIRST.

1. Januar eines Jahres definiert die Anfangszahl für die WocheDatepart, z. B.: DATEPART (wk, ' Jan 1, XxxX') = 1, in dem Xxxx beliebiges Jahr ist.January 1 of any year defines the starting number for the weekdatepart, for example: DATEPART (wk, 'Jan 1, xxxx') = 1, where xxxx is any year.

Die folgende Tabelle enthält den Rückgabewert für Woche und WochentagDatepart für "2007-04-21' für jedes SET DATEFIRST-Argument.The following table lists the return value for week and weekdaydatepart for '2007-04-21 ' for each SET DATEFIRST argument. Der 1. Januar ist im Jahr 2007 ein Montag.January 1 is a Monday in the year 2007. Der 21. April ist im Jahr 2007 ein Samstag.April 21 is a Saturday in the year 2007. SET DATEFIRST 7, ist Sonntag, die Standardeinstellung für USA Englisch.SET DATEFIRST 7, Sunday, is the default for U.S. English.

SET DATEFIRSTSET DATEFIRST

Argumentargument
weekweek

hat zurückgegebenreturned
weekdayweekday

hat zurückgegebenreturned
11 1616 66
22 1717 55
33 1717 44
44 1717 33
55 1717 22
66 1717 11
77 1616 77

datepart-Argumente des Typs year, month und dayyear, month, and day datepart Arguments

Die Werte, die für DatePart-Wert zurückgegeben werden (Jahr, Datum), DATEPART (Monat, Datum), "und" DATEPART (Tag , Datum) sind identisch mit denen von der Funktion zurückgegebenen Jahr, Monat, und Tag, f bzw..The values that are returned for DATEPART (year, date), DATEPART (month, date), and DATEPART (day, date) are the same as those returned by the functions YEAR, MONTH, and DAY, f respectively.

ISO_WEEK datepartISO_WEEK datepart

ISO 8601 schließt das ISO-Wochensystem zur Nummerierung von Wochen ein.ISO 8601 includes the ISO week-date system, a numbering system for weeks. Die einzelnen Wochen werden mit dem Jahr verknüpft, in dem Donnerstag auftritt.Each week is associated with the year in which Thursday occurs. Beispielsweise startet die Woche 1 im Jahr 2004 (2004W01) am 29. Dezember 2003 (Montag) und endet am 4. Januar 2004 (Sonntag).For example, week 1 of 2004 (2004W01) ran from Monday 29 December 2003 to Sunday, 4 January 2004. Die höchste Wochennummer kann in einem Jahr 52 oder 53 sein.The highest week number in a year might be 52 or 53. 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.This style of numbering is typically used in European countries/regions, but rare elsewhere.

Das Nummerierungssystem in anderen Ländern oder Regionen entspricht möglicherweise nicht dem ISO-Standard.The numbering system in different countries/regions might not comply with the ISO standard. Es gibt mindestens sechs Möglichkeiten, wie in der folgenden Tabelle dargestellt.There are at least six possibilities as shown in the following table

Erster Tag der WocheFirst day of week Erste Woche im Jahr enthältFirst week of year contains Doppelt zugewiesene WochenWeeks assigned two times Verwendet von/inUsed by/in
SonntagSunday 1. Januar1 January,

Erster SamstagFirst Saturday,

1–7 Tage im Jahr1–7 days of year
jaYes USAUnited States
MontagMonday 1. Januar1 January,

Erster SonntagFirst Sunday,

1–7 Tage im Jahr1–7 days of year
jaYes Die meisten Länder Europas und das Vereinigte KönigreichMost of Europe and the United Kingdom
MontagMonday 4. Januar4 January,

Erster DonnerstagFirst Thursday,

4 – 7 Tage im Jahr4–7 days of year
NeinNo ISO 8601, Norwegen und SchwedenISO 8601, Norway, and Sweden
MontagMonday 7 Januar7 January,

Erster MontagFirst Monday,

7 Tage im Jahr7 days of year
NeinNo
MittwochWednesday 1. Januar1 January,

Erster DienstagFirst Tuesday,

1–7 Tage im Jahr1–7 days of year
jaYes
SamstagSaturday 1. Januar1 January,

Erster FreitagFirst Friday,

1–7 Tage im Jahr1–7 days of year
jaYes

TZoffsetTZoffset

Die TZoffset (Tz) wird als die Anzahl der Minuten (signiert) zurückgegeben.The TZoffset (tz) is returned as the number of minutes (signed). Die folgende Anweisung gibt ein Zeitzonenoffset von 310 Minuten zurück.The following statement returns a time zone offset of 310 minutes.

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

Der Wert des Typs TZoffset wird wie folgt gerendert:The TZoffset value is rendered as follows:

  • Für "DateTimeOffset" und datetime2 zurückgegeben, TZoffset die zeitverschiebung in Minuten an, ist der Offset für datetime2 immer 0 Minuten.For datetimeoffset and datetime2, TZoffset returns the time offset in minutes, where the offset for datetime2 is always 0 minutes.
  • Für Datentypen, die implizit in "DateTimeOffset" oder in datetime2, mit Ausnahme von der andere Datum/Uhrzeit-Datentypen konvertiert werden können wird die zeitverschiebung in Minuten zurückgegeben.For data types that can be implicitly converted to datetimeoffset or datetime2, with the exception of the other date/time data types, it returns the time offset in minutes.
  • Parameter für alle anderen Typen führen zu einem Fehler.Parameters of all other types result in an error.

date-Argument des Typs smalldatetimesmalldatetime date Argument

Wenn Datum ist Smalldatetime, werden Sekunden als 00 zurückgegeben.When date is smalldatetime, seconds are returned as 00.

Zurückgeben des Standardwerts für ein datepart-Argument, das nicht in einem date-Argument enthalten istDefault Returned for a datepart That Is Not in a date Argument

Wenn der Datentyp der Datum Argument weist nicht auf den angegebenen Datepart, der Standardwert für diese Datepart zurückgegeben, wenn ein Literal für angegebenwirdDatum.If the data type of the date argument does not have the specified datepart, the default for that datepart will be returned only when a literal is specified for date.

Beispielsweise die Standardeinstellung Jahr-Monat-Tag für eine beliebige Datum -Datentyp ist 1900-01-01.For example, the default year-month-day for any date data type is 1900-01-01. Die folgende Anweisung verfügt über DatePart-Argumente für Datepart, ein Time-Argument für Datum, und gibt 1900, 1, 1, 1, 2.The following statement has date part arguments for datepart, a time argument for date, and returns 1900, 1, 1, 1, 2.

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 Datum wird angegeben, wie eine Variable oder Tabellenspalte und die Daten geben, dass Variablen oder Spalte nicht dem angegebenen Datepart, Fehler 9810 zurückgegeben.If date is specified as a variable or table column and the data type for that variable or column does not have the specified datepart, error 9810 is returned. Im folgenden Codebeispiel wird ein Fehler auftritt, weil das Year-Datumsteil kein gültiger für ist die Zeit -Datentyp, der für die Variable deklariert wird @t .The following code example fails because the date part year is not a valid for the time data type that is declared for the variable @t.

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

SekundenbruchteileFractional seconds

Die folgenden Anweisungen verdeutlichen, wie Sekundenbruchteile zurückgegeben werden:Fractional seconds are returned as shown in the following statements:

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  

HinweiseRemarks

DATEPART kann in den Klauseln WHERE, HAVING, GROUP BY und ORDER BY der SELECT-Liste verwendet werden.DATEPART can be used in the select list, WHERE, HAVING, GROUP BY and ORDER BY clauses.

In SQL Server 2017SQL Server 2017, wandelt DATEPART Zeichenfolgenliterale als implizit eine datetime2 Typ.In SQL Server 2017SQL Server 2017, DATEPART implicitly casts string literals as a datetime2 type. Daher unterstützt DATEPART das Format YDM nicht, wenn das Datum als Zeichenfolge übergeben wird.This means that DATEPART does not support the format YDM when the date is passed as a string. Sie müssen die Zeichenfolge, die explizit Umwandeln einer "DateTime" oder Smalldatetime Typ das YDM-Format verwendet.You must explicitly cast the string to a datetime or smalldatetime type to use the YDM format.

BeispieleExamples

Das folgende Beispiel gibt das Basisjahr zurück.The following example returns the base year. Das Basisjahr ist für Datumsberechnungen nützlich.The base year is useful for date calculations. Im Beispiel wird das Datum in Form einer Zahl angegeben.In the example, the date is specified as a number. Beachten Sie, dass SQL ServerSQL Server den Wert 0 als 1. Januar 1900 interpretiert.Notice that SQL ServerSQL Server interprets 0 as January 1, 1900.

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

Das folgende Beispiel gibt die Tagesangabe des Datums 12/20/1974.The following example returns the day part of the date 12/20/1974.

-- Uses AdventureWorks  

SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;  

Im Folgenden finden Sie das Resultset.Here is the result set.

--------
20

Das folgende Beispiel gibt den Jahresteil des Datums 12/20/1974.The following example returns the year part of the date 12/20/1974.

-- Uses AdventureWorks  

SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;  

Im Folgenden finden Sie das Resultset.Here is the result set.

--------
1974

Siehe auchSee also

CAST und CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)