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

TODATETIMEOFFSET() Przykłady w SQL Server

W SQL Server możesz użyć TODATETIMEOFFSET() funkcja zwracająca przesunięcie daty i godziny wartość, która jest tłumaczona z datetime2 wyrażenie. Przyjmuje dwa argumenty; datę i przesunięcie, które chcesz zastosować do tej daty.

Poniżej znajdują się przykłady użycia.

Składnia

Składnia TODATETIMEOFFSET() idzie tak:

TODATETIMEOFFSET ( expression , time_zone )

Gdzie expression to wyrażenie, które zamienia się na datetime2 wartość i time_zone to strefa czasowa, którą chcesz zastosować do tego wyrażenia (data).

Możesz podać strefę czasową w minutach lub godzinach. Jeśli podasz go w ciągu kilku minut, użyj liczby całkowitej (np. -120 ), w przeciwnym razie, aby podać go w godzinach, użyj ciągu (np. '+04.00' ). Zakres strefy czasowej wynosi od +14 do -14 (godzin).

Ponadto podana data jest interpretowana w czasie lokalnym dla określonej strefy czasowej.

Przykład 1

Oto podstawowy przykład użycia:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;

Wynik:

Result
----------------------------------
2112-01-01 00:00:00.0000000 +08:00

Przykład 2 – Wartość ujemna

To jest to samo, co w poprzednim przykładzie, z tą różnicą, że zamiast tego używam wartości ujemnej:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;

Wynik:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -08:00

Przykład 3 – Używanie zmiennej datetime2

W tym przykładzie jawnie ustawiłem zmienną z datetime2 wartość, a następnie zastosuj TODATETIMEOFFSET() do tej wartości i porównaj wartości:

DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Wynik:

Original Date               +08:00
--------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00

Jak widać w tym przykładzie (i poprzednich), oryginalna wartość daty nie ma żadnej daty/godziny informacje o przesunięciu (ponieważ jest to data/godzina2 wartość), ale po uruchomieniu go przez TODATETIMEOFFSET() funkcja, otrzymujemy przesunięcie daty i godziny typ danych.

Przykład 4 – Korzystanie ze zmiennej przesunięcia daty i czasu

Jest to podobne do poprzedniego przykładu, z tą różnicą, że pierwotna data jest ustawiona jako przesunięcie daty i godziny wartość:

DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Wynik:

Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00

Przykład 5 – Korzystanie z bieżącej daty/godziny

W tym przykładzie przekazuję SYSDATETIMEOFFSET() pełni funkcję wyrażenia daty. Ta funkcja generuje bieżącą datę/czas komputera, na którym działa instancja SQL Server:

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Wynik:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00

Przykład 6 – Podawanie przesunięcia strefy czasowej jako liczby całkowitej

Jak wspomniano, możesz również podać przesunięcie strefy czasowej jako liczbę całkowitą zamiast ciągu:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;

Wynik:

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. Jak wyświetlić datę w amerykańskim formacie daty w programie SQL Server (T-SQL)

  2. zwraca wartość na pozycji z STRING_SPLIT w SQL Server 2016

  3. na czym polega problem z AttachDbFilename?

  4. Tymczasowe wyłączenie ograniczeń (MS SQL)

  5. Tabele SQL Server:jaka jest różnica między @, # i ##?