sql >> Databáze >  >> RDS >> Sqlserver

SWITCHOFFSET() Příklady v SQL Server

V SQL Server, SWITCHOFFSET() funkci lze použít k vrácení datetimeoffset hodnota, která se změní z uloženého posunu časového pásma na zadaný nový posun časového pásma.

Níže jsou uvedeny příklady, jak tato funkce funguje.

Syntaxe

Nejprve se podívejme, jak probíhá syntaxe:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Kde DATETIMEOFFSET je výraz, který lze přeložit na datetimeoffset(n) hodnotu a time_zone je znakový řetězec ve formátu [+|-]TZH:TZM nebo celé číslo se znaménkem (v minutách), které představuje posun časového pásma a předpokládá se, že je v souladu s letním časem a je upraven.

Výsledek je vrácen jako datetimeoffset se zlomkovou přesností DATETIMEOFFSET argument.

Příklad 1

Zde je základní příklad použití:

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

Výsledek:

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

Příklad 2

Tento příklad používá zápornou hodnotu:

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

Výsledek:

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

Příklad 4

V tomto příkladu deklarujeme proměnnou a přiřadíme jí datum pomocí datetimeoffset datový typ. Poté použijeme SWITCHOFFSET() k tomuto datu a porovnejte jej s původním datem.

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

Výsledek:

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

Příklad 5

Zde uděláme to samé jako v předchozím příkladu, ale použijeme SYSDATETIMEOFFSET() funkce pro vygenerování aktuálního data/času a posunu.

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

Výsledek:

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

Příklad 6

Tento příklad je stejný jako předchozí, kromě toho, že přidáme zápornou hodnotu.

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

Výsledek:

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

Příklad 7

Můžete také zadat posun časového pásma jako celé číslo namísto řetězce:

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

Výsledek:

Result
----------------------------------
2111-12-31 21:00:00.0000000 -03:00

  1. Vytvoření tabulky a vložení stejným postupem v pl/sql

  2. Jak najít a nahradit text v databázi MySQL pomocí SQL

  3. Jak zacházet s jednou citací v Oracle SQL

  4. Jak zabudovat funkcionalitu RUNAS /NETONLY do programu (C#/.NET/WinForms)?