В SQL Server можете да използвате TODATETIMEOFFSET()
функция за връщане datetimeoffset стойност, която е преведена от datetime2 изразяване. Приема два аргумента; датата и отместването, което искате да приложите към тази дата.
По-долу са дадени примери за употреба.
Синтаксис
Синтаксисът на TODATETIMEOFFSET()
става така:
TODATETIMEOFFSET ( expression , time_zone )
Където expression
е израз, който се разрешава до datetime2 стойност и time_zone
е часовата зона, която искате да приложите към този израз (дата).
Можете да посочите часовата зона в минути или часове. Ако го предоставите за минути, използвайте цяло число (напр. -120
), в противен случай, за да го предоставите в часове, използвайте низ (напр. '+04.00'
). Диапазонът за часовата зона е +14 до -14 (часа).
Освен това предоставената от вас дата се интерпретира в местно време за посочената часова зона.
Пример 1
Ето един основен пример за употреба:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Резултат:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Пример 2 – Отрицателна стойност
Това е същото като предишния пример, с изключение на това, че вместо това използвам отрицателна стойност:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Резултат:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Пример 3 – Използване на променлива datetime2
В този пример изрично зададох променлива с datetime2 стойност, след което приложете TODATETIMEOFFSET()
до тази стойност и сравнете стойностите:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Резултат:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Както можем да видим с този пример (и предишните), първоначалната стойност за дата няма datetime информация за отместване (защото е datetime2 стойност), но след като го изпълним през TODATETIMEOFFSET()
функция, в крайна сметка получаваме datetimeoffset тип данни.
Пример 4 – Използване на променлива datetimeoffset
Това е подобно на предишния пример, с изключение на това, че оригиналната дата е зададена като datetimeoffset стойност:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Резултат:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Пример 5 – Използване на текущата дата/час
В този пример предавам SYSDATETIMEOFFSET()
функционира като израз за дата. Тази функция генерира текущата дата/час на компютъра, който изпълнява екземпляра на SQL Server:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Резултат:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Пример 6 – Предоставяне на изместване на часовата зона като цяло число
Както споменахме, можете също да предоставите изместването на часовата зона като цяло число вместо низ:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Резултат:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00