In SQL Server, de TODATETIMEOFFSET()
functie is speciaal ontworpen om een datetimeoffset te retourneren waarde van een datetime2 waarde.
Gezien het feit dat de datetime2 gegevenstype ondersteunt eigenlijk geen tijdzone-offsets, en datetimeoffset moet de offset bevatten, de TODATETIMEOFFSET()
Met deze functie kunt u een tijdzone-offset specificeren om te gebruiken.
Dit artikel geeft enkele voorbeelden om te demonstreren.
Basisgebruik
Hier is een voorbeeld van typisch gebruik van de TODATETIMEOFFSET()
functie.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];
Resultaat (met verticale uitvoer):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00
In dit geval retourneer ik de originele datetime2 waarde en de resulterende datetimeoffset waarde.
Het resultaat is dat de oorspronkelijke datum/tijd hetzelfde is, behalve dat de opgegeven tijdzone-offset is toegevoegd.
Het bereik is +14 tot -14 (in uren). De uitdrukking wordt geïnterpreteerd in lokale tijd voor de opgegeven tijdzone.
Specificeer de tijdzoneverschuiving in minuten
Als alternatief kunt u de tijdzone-offset in minuten specificeren. Hier is een voorbeeld.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];
Resultaat (met verticale uitvoer):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00
In dit geval heb ik +120 minuten opgegeven, wat hetzelfde is als twee uur. Het resultaat was dus een tijdzoneverschuiving van +02:00 (dus plus twee uur).
Houd er ook rekening mee dat wanneer u de tijdzone-offset in minuten opgeeft, u deze als een geheel getal opgeeft. Aan de andere kant, wanneer u het in uren opgeeft, moet u het als een tekenreeks specificeren.
Zie Een datum converteren naar een andere tijdzone voor voorbeelden over hoe u dit kunt doen.