sql >> Database >  >> RDS >> Sqlserver

Een tijdzone-offset toevoegen aan een datetime2-waarde in SQL Server (T-SQL)

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.


  1. wat is de ontsnappingsreeks voor koppelteken (-) in PostgreSQL

  2. MySQL hoog CPU-gebruik

  3. Vereenvoudiging van het testen van eenheden Belangrijkste opgeslagen procedure die ook een hulpprogramma-procedure aanroept

  4. ROLLBACK-gebeurtenistriggers in postgresql