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

Добавете отместване на часовата зона към стойност datetime2 в SQL Server (T-SQL)

В 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 (което означава плюс два часа).

Също така имайте предвид, че когато предоставяте изместването на часовата зона в минути, вие го предоставяте като цяло число. От друга страна, когато го предоставите в часове, трябва да го посочите като низ.

Вижте Преобразуване на дата в друга часова зона за примери как да направите това.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Какво е по-добре бит или символ (1)

  2. SQL Server 2016:Вмъкване на данни

  3. MultipleActiveResultSets=Истински или множество връзки?

  4. Как мога да групирам колона по дата и час, без да вземам предвид времето

  5. Надстроих ODBC драйвера на SQL Server и производителността беше отрицателно засегната. Какво мога да направя?