DATETIMEOFFSETFROMPARTS (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt einen datetimeoffset-Wert für die angegebenen Argumente für Datum und Zeit zurück. Die Genauigkeit des Rückgabewerts wird vom precision-Argument angegeben, und Offsets werden von den Offsetargumenten bestimmt.

Transact-SQL-Syntaxkonventionen

Syntax

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

year
Ein ganzzahliger Ausdruck, der ein Jahr angibt.

month
Ein ganzzahliger Ausdruck, der einen Monat angibt.

day
Ein ganzzahliger Ausdruck, der einen Tag angibt.

hour
Ein ganzzahliger Ausdruck, der die Stunden angibt.

minute
Ein ganzzahliger Ausdruck, der die Minuten angibt.

Sekunden
Ein ganzzahliger Ausdruck, der die Sekunden angibt.

fractions
Ein ganzzahliger Ausdruck, der einen Wert für Sekundenbruchteile angibt.

hour_offset
Ein ganzzahliger Ausdruck, der den Stundenteil des Zeitzonenoffsets angibt.

minute_offset
Ein ganzzahliger Ausdruck, der den Minutenteil des Zeitzonenoffsets angibt.

precision
Ein ganzzahliger literaler Wert, der die Genauigkeit des datetimeoffset-Werts angibt, der von DATETIMEOFFSETFROMPARTS zurückgegeben wird.

Rückgabetypen

datetimeoffset(Genauigkeit)

Bemerkungen

DATETIMEOFFSETFROMPARTS gibt einen vollständig initialisierten datetimeoffset-Datentyp zurück. Die Offsetargumente stellen den Zeitzonenoffset dar. Bei ausgelassenen Offsetargumenten geht DATETIMEOFFSETFROMPARTS von einem Zeitzonenoffset von 00:00 (also kein Zeitzonenoffset) aus. Bei angegebenen Offsetargumenten erwartet DATETIMEOFFSETFROMPARTS Werte für beide Argumente, und beide Werte müssen entweder positiv oder negativ sein. Wenn minute_offset einen Wert und hour_offset keinen Wert aufweist, löst DATETIMEOFFSETFROMPARTS einen Fehler aus. DATETIMEOFFSETFROMPARTS löst einen Fehler aus, wenn andere Argumente über ungültige Werte verfügen. Wenn mindestens ein erforderliches Argument über einen NULL-Wert verfügt, dann gibt DATETIMEOFFSETFROMPARTSNULL zurück. Wenn das precision-Argument jedoch einen NULL-Wert enthält, löst DATETIMEOFFSETFROMPARTS einen Fehler aus.

Das fractions-Argument ist vom precision-Argument abhängig. Wenn „precision“ beispielsweise den Wert 7 aufweist, stellt jeder Bruchteil 100 Nanosekunden dar. Wenn „precision“ jedoch den Wert 3 aufweist, stellt jeder Bruchteil eine Millisekunde dar. Wenn der Wert von „precision“ 0 (null) ist, muss auch der Wert von „fractions“ 0 (null) sein; andernfalls löst DATETIMEOFFSETFROMPARTS einen Fehler aus.

Diese Funktion kann remote auf SQL Server 2012 (11.x)-Servern oder höher ausgeführt werden. Eine Remoteausführung auf Servern mit einer Version vor SQL Server 2012 (11.x) ist nicht möglich.

Beispiele

A. Ein Beispiel ohne Sekundenbruchteile

SELECT DATETIMEOFFSETFROMPARTS ( 2010, 12, 31, 14, 23, 23, 0, 12, 0, 7 ) AS Result;  

Hier ist das Resultset.

Result  
----------------------------------
2010-12-31 14:23:23.0000000 +12:00  
  
(1 row(s) affected)  

B. Beispiel mit Sekundenbruchteilen

Dieses Beispiel zeigt die Verwendung der Parameter fractions und precision:

  1. Wenn fractions den Wert 5 und precision den Wert 1 hat, stellt der Wert von fractions 5/10 einer Sekunde dar.

  2. Wenn fractions den Wert 50 und precision den Wert 2 hat, stellt der Wert von fractions 50/100 einer Sekunde dar.

  3. Wenn fractions den Wert 500 und precision den Wert 3 hat, stellt der Wert von fractions 500/1000 einer Sekunde dar.

SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 5, 12, 30, 1 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 50, 12, 30, 2 );  
SELECT DATETIMEOFFSETFROMPARTS ( 2011, 8, 15, 14, 30, 00, 500, 12, 30, 3 );  
GO  

Hier ist das Resultset.

----------------------------------  
2011-08-15 14:30:00.5 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.50 +12:30  
  
(1 row(s) affected)  
  
----------------------------------  
2011-08-15 14:30:00.500 +12:30  
  
(1 row(s) affected)  

Siehe auch

datetimeoffset (Transact-SQL)
AT TIME ZONE (Transact-SQL)