In SQL Server kunt u de TODATETIMEOFFSET() . gebruiken functie om een datetimeoffset . te retourneren waarde die is vertaald uit een datetime2 uitdrukking. Het accepteert twee argumenten; de datum en de offset die u op die datum wilt toepassen.
Hieronder staan voorbeelden van gebruik.
Syntaxis
De syntaxis van TODATETIMEOFFSET() gaat als volgt:
TODATETIMEOFFSET ( expression , time_zone )
Waar expression is een uitdrukking die wordt omgezet in een datetime2 waarde, en time_zone is de tijdzone die u op die uitdrukking (datum) wilt toepassen.
U kunt de tijdzone in minuten of uren opgeven. Als je het in minuten opgeeft, gebruik dan een geheel getal (bijv. -120 ), gebruik anders om het in uren op te geven een tekenreeks (bijv. '+04.00' ). Het bereik voor de tijdzone is +14 tot -14 (uren).
De datum die u opgeeft, wordt ook geïnterpreteerd in lokale tijd voor de opgegeven tijdzone.
Voorbeeld 1
Hier is een eenvoudig gebruiksvoorbeeld:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Resultaat:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Voorbeeld 2 – Negatieve waarde
Dit is hetzelfde als het vorige voorbeeld, behalve dat ik in plaats daarvan een negatieve waarde gebruik:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Resultaat:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Voorbeeld 3 – Een datetime2-variabele gebruiken
In dit voorbeeld stel ik expliciet een variabele in met een datetime2 waarde, pas dan TODATETIMEOFFSET() toe met die waarde, en vergelijk de waarden:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT
@date AS 'Original Date',
TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Resultaat:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Zoals we in dit voorbeeld (en de vorige) kunnen zien, heeft de oorspronkelijke datumwaarde geen datetime offset-informatie (omdat het een datetime2 . is waarde), maar zodra we het door de TODATETIMEOFFSET() functie, eindigen we met een datetimeoffset gegevenstype.
Voorbeeld 4 – Een datetimeoffset-variabele gebruiken
Dit is vergelijkbaar met het vorige voorbeeld, behalve dat de oorspronkelijke datum is ingesteld als een datetimeoffset waarde:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT
@date AS 'Original Date',
TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Resultaat:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Voorbeeld 5 – De huidige datum/tijd gebruiken
In dit voorbeeld geef ik de SYSDATETIMEOFFSET() . door functie als de datumuitdrukking. Deze functie genereert de huidige datum/tijd van de computer waarop de SQL Server-instantie wordt uitgevoerd:
SELECT
SYSDATETIMEOFFSET() AS 'Current Date',
TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Resultaat:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Voorbeeld 6 – De tijdzone-offset als een geheel getal opgeven
Zoals vermeld, kunt u de tijdzone-offset ook als een geheel getal opgeven in plaats van een tekenreeks:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Resultaat:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00