Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SWITCHOFFSET() Примери в SQL Server

В 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Родната библиотека sqljdbc_auth.dll вече е заредена в друг зареждач на класове

  2. Как мога да ИЗБЕРЕМ множество колони в рамките на CASE WHEN на SQL Server?

  3. Настройка на изчакване за SQL Server

  4. Как да конфигурирате поща на база данни в SQL Server

  5. Как да промените пощенския профил на база данни по подразбиране за потребител в SQL Server (T-SQL)