В SQL Server, SWITCHOFFSET()
функцията може да се използва за връщане на datetimeoffset стойност, която се променя от съхраненото изместване на часовата зона към определено ново отместване на часовата зона.
По-долу са дадени примери за това как работи тази функция.
Синтаксис
Първо, ето как върви синтаксисът:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Където DATETIMEOFFSET
е израз, който може да бъде разрешен до datetimeoffset(n) стойност и time_zone
е низ от знаци във формат [+|-]TZH:TZM или цяло число със знак (от минути), което представлява изместването на часовата зона и се приема, че е наясно и коригирано за лятното часово време.
Резултатът се връща като отместване на датата и времето с дробна точност на DATETIMEOFFSET
аргумент.
Пример 1
Ето един основен пример за употреба:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Резултат:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Пример 2
Този пример използва отрицателна стойност:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Резултат:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Пример 4
В този пример ние декларираме променлива и й присвояваме дата с помощта на datetimeoffset тип данни. След това прилагаме SWITCHOFFSET()
до тази дата и я сравнете с оригиналната дата.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Резултат:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Пример 5
Тук правим същото като предишния пример, но използваме SYSDATETIMEOFFSET()
функция за генериране на текущата дата/час и отместване.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Резултат:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Пример 6
Този пример е същият като предишния, само че добавяме отрицателна стойност.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Резултат:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Пример 7
Можете също да предоставите изместването на часовата зона като цяло число вместо низ:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Резултат:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00