Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dodaj przesunięcie strefy czasowej do wartości datetime2 w programie SQL Server (T-SQL)

W SQL Server TODATETIMEOFFSET() funkcja została specjalnie zaprojektowana do zwracania datetimeoffset wartość z datetime2 wartość.

Biorąc pod uwagę fakt, że datetime2 typ danych w rzeczywistości nie obsługuje przesunięć stref czasowych, a datetimeoffset musi zawierać przesunięcie, TODATETIMEOFFSET() funkcja pozwala określić przesunięcie strefy czasowej do użycia.

Ten artykuł zawiera kilka przykładów do zademonstrowania.

Podstawowe użycie

Oto przykład typowego użycia TODATETIMEOFFSET() funkcjonować.

DECLARE @dt datetime2 ='2020-12-20 17:33:59.8900000';SELECT @dt AS [dataczas2], TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset]; 

Wynik (przy użyciu wyjścia pionowego):

datetime2 | 2020-12-20 17:33:59.8900000dataprzesunięcie czasu | 2020-12-20 17:33:59.8900000 +07:00

W takim przypadku zwracam oryginał datetime2 wartość i wynikowe przesunięcie daty/czasu wartość.

W rezultacie oryginalna data/godzina jest taka sama, z wyjątkiem dołączonego przesunięcia strefy czasowej.

Zakres wynosi od +14 do -14 (w godzinach). Wyrażenie jest interpretowane w czasie lokalnym dla określonej strefy czasowej.

Określ przesunięcie strefy czasowej w minutach

Alternatywnie można określić przesunięcie strefy czasowej w minutach. Oto przykład.

DECLARE @dt datetime2 ='2020-12-20 17:33:59.8900000';SELECT @dt AS [dataczas2], TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset]; 

Wynik (przy użyciu wyjścia pionowego):

datetime2 | 2020-12-20 17:33:59.8900000dataprzesunięcie czasu | 2020-12-20 17:33:59.8900000 +02:00

W tym przypadku podałem +120 minut, czyli dwie godziny. Rezultatem było przesunięcie strefy czasowej o +02:00 (czyli plus dwie godziny).

Należy również pamiętać, że po podaniu przesunięcia strefy czasowej w minutach podaje się je jako wartość całkowitą. Z drugiej strony, gdy podajesz go w godzinach, musisz określić go jako ciąg.

Zobacz Konwertowanie daty na inną strefę czasową, aby zobaczyć przykłady, jak to zrobić.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypt do zabijania wszystkich połączeń z bazą danych (więcej niż RESTRICTED_USER ROLLBACK)

  2. Jak wyłączyć wszystkie ograniczenia klucza obcego w bazie danych SQL Server — samouczek SQL Server/TSQL — część 77?

  3. Nie można rozwiązać konfliktu sortowania

  4. Jaka jest różnica między Scope_Identity(), Identity(), @@Identity i Ident_Current()?

  5. Przestaw SQL Server a sprzężenie wielokrotne