In SQL Server, de SWITCHOFFSET()
functie kan worden gebruikt om een datetimeoffset . te retourneren waarde die is gewijzigd van de opgeslagen tijdzone-offset naar een gespecificeerde nieuwe tijdzone-offset.
Hieronder staan voorbeelden van hoe deze functie werkt.
Syntaxis
Ten eerste, hier is hoe de syntaxis werkt:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Waar DATETIMEOFFSET
is een uitdrukking die kan worden omgezet in een datetimeoffset(n) waarde, en time_zone
is een tekenreeks in het formaat [+|-]TZH:TZM of een geheel getal met teken (van minuten) dat de tijdzone-offset vertegenwoordigt, en wordt verondersteld bewust te zijn van de zomertijd en aangepast.
Het resultaat wordt geretourneerd als een datetimeoffset met de fractionele precisie van de DATETIMEOFFSET
argument.
Voorbeeld 1
Hier is een eenvoudig gebruiksvoorbeeld:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Resultaat:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Voorbeeld 2
In dit voorbeeld wordt een negatieve waarde gebruikt:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Resultaat:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Voorbeeld 4
In dit voorbeeld declareren we een variabele en wijzen er een datum aan toe met behulp van de datetimeoffset data type. We passen dan SWITCHOFFSET()
. toe tot die datum en vergelijk deze met de oorspronkelijke datum.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Resultaat:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Voorbeeld 5
Hier doen we hetzelfde als het vorige voorbeeld, maar we gebruiken de SYSDATETIMEOFFSET()
functie om de huidige datum/tijd en offset te genereren.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Resultaat:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Voorbeeld 6
Dit voorbeeld is hetzelfde als het vorige, behalve dat we een negatieve waarde toevoegen.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Resultaat:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Voorbeeld 7
U kunt de tijdzone-offset ook opgeven als een geheel getal in plaats van een tekenreeks:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Resultaat:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00