Freigeben über


DATETIMEOFFSETFROMPARTS (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 )  

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 )

Hinweise

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 sehen Sie das Ergebnis.

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 sehen Sie das Ergebnis.

----------------------------------  
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)