В SQL Server, TODATETIMEOFFSET()
функцията е специално проектирана да връща отместване на датата и времето стойност от datetime2 стойност.
Предвид факта, че datetime2 типът данни всъщност не поддържа измествания на часовата зона и datetimeoffset трябва да съдържа отместването, TODATETIMEOFFSET()
функцията ви позволява да зададете изместване на часовата зона, което да използвате.
Тази статия предоставя някои примери за демонстрация.
Основна употреба
Ето пример за типично използване на TODATETIMEOFFSET()
функция.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];
Резултат (с помощта на вертикален изход):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00
В този случай връщам оригиналния datetime2 стойност и получената datetimeoffset стойност.
Резултатът е, че оригиналната дата/час е една и съща, с изключение на това, че е добавено посоченото отместване на часовата зона.
Диапазонът е +14 до -14 (в часове). Изразът се интерпретира в местно време за посочената часова зона.
Определете отместването на часовата зона в минути
Като алтернатива можете да посочите изместването на часовата зона в минути. Ето един пример.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];
Резултат (с помощта на вертикален изход):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00
В този случай посочих +120 минути, което е същото като два часа. Така че резултатът беше изместване на часовата зона от +02:00 (което означава плюс два часа).
Също така имайте предвид, че когато предоставяте изместването на часовата зона в минути, вие го предоставяте като цяло число. От друга страна, когато го предоставите в часове, трябва да го посочите като низ.
Вижте Преобразуване на дата в друга часова зона за примери как да направите това.