T-SQL har en funktion som heter DATETIMEOFFSETFROMPARTS()
som låter dig få en datumtidsförskjutning värde från de olika separata delarna av ett datum. Specifikt returnerar den en datumtidsförskjutning värde för angivet datum och tid och med angivna förskjutningar och precision.
Exempel på denna funktion nedan.
Syntax
Syntaxen ser ut så här:
DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )
Var:
- De första 7 argumenten är heltalsuttryck som anger den specifika datum-/tidsdelen.
hour_offset
argument är ett heltalsuttryck som anger timdelen av tidszonsförskjutningen.minute_offset
är ett heltalsuttryck som anger minutdelen av tidszonsförskjutningen.precision
argument är ett heltal som anger precisionen för datetimeoffset värde som ska returneras. Detta värde anger faktiskt skalan (dvs. antalet siffror till höger om decimalen).
Exempel
Här är ett exempel på användning.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultat:
Result ---------------------------------- 2021-05-10 23:35:29.0500 +12:30
Ogiltiga argument
Du måste se till att alla argument är giltiga, annars får du ett felmeddelande. Här är ett exempel på att tillhandahålla en timdel utanför intervallet (25). Timdelen kan bara vara mellan 0 och 24.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 25, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultat:
Cannot construct data type datetimeoffset, some of the arguments have values which are not valid.
Antal argument
Du måste ange rätt antal argument (10). Om du inte gör det får du ett felmeddelande.
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10 ) AS Result;
Resultat:
The datetimeoffsetfromparts function requires 10 argument(s).
Nollargument
Om något av de första 9 argumenten är null, blir resultatet NULL
:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 12, 30, 4 ) AS Result;
Resultat:
Result ---------------------------------- NULL
Men om det sista (precisions)argumentet är null, returneras ett fel:
SELECT DATETIMEOFFSETFROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 12, 30, NULL ) AS Result;
Resultat:
Scale argument is not valid. Valid expressions for data type datetimeoffset scale argument are integer constants and integer constant expressions.
Se även DATETIME2FROMPARTS()-exempel i SQL Server (T-SQL) för att returnera en datetime2 värde (utan offset).