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

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

В 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как OBJECTPROPERTY() работи в SQL Server

  2. @@ГРЕШКА и/или ОПИТ - ХВАНЕ

  3. Създаване на DISTINCT стойности в STRING_AGG

  4. Как да намерите всички нарушения на ограниченията в база данни на SQL Server

  5. Урок за разделяне на таблица на SQL Server и дялове