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

SWITCHOFFSET() Przykłady w SQL Server

W SQL Server, SWITCHOFFSET() funkcja może służyć do zwracania przesunięcia daty i godziny wartość, która została zmieniona z zapisanego przesunięcia strefy czasowej na określone przesunięcie nowej strefy czasowej.

Poniżej znajdują się przykłady działania tej funkcji.

Składnia

Po pierwsze, oto jak idzie składnia:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Gdzie DATETIMEOFFSET to wyrażenie, które można rozwiązać na datetimeoffset(n) wartość i time_zone jest ciągiem znaków w formacie [+|-]TZH:TZM lub liczbą całkowitą ze znakiem (minut), która reprezentuje przesunięcie strefy czasowej i przyjmuje się, że uwzględnia i dostosowuje czas letni.

Wynik jest zwracany jako przesunięcie daty i godziny z ułamkową precyzją DATETIMEOFFSET argument.

Przykład 1

Oto podstawowy przykład użycia:

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

Wynik:

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

Przykład 2

W tym przykładzie zastosowano wartość ujemną:

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

Wynik:

Result
----------------------------------
2111-12-31 16:00:00.0000000 -08:00

Przykład 4

W tym przykładzie deklarujemy zmienną i przypisujemy do niej datę za pomocą przesunięcie daty i godziny typ danych. Następnie stosujemy SWITCHOFFSET() do tej daty i porównaj ją z pierwotną datą.

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

Wynik:

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

Przykład 5

Tutaj robimy to samo, co w poprzednim przykładzie, ale używamy SYSDATETIMEOFFSET() funkcja do generowania bieżącej daty/czasu i przesunięcia.

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

Wynik:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00

Przykład 6

Ten przykład jest taki sam jak poprzedni, z tą różnicą, że dodajemy wartość ujemną.

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';

Wynik:

Current Date                       -08:00
---------------------------------- ----------------------------------
2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00

Przykład 7

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

SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;

Wynik:

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. Obrót wielu kolumn w T-SQL

  2. Sprawdzanie kopii zapasowej serwera SQL

  3. Podziel partycję na dwie w SQL Server (T-SQL)

  4. Jak uzyskać Distinct Records z tabeli w SQL Server - SQL Server / TSQL Tutorial 112

  5. Nieoczekiwane zachowanie @@rowcount wewnątrz UDF w MS SQL 2019