sql >> Database teknologi >  >> RDS >> Sqlserver

SWITCHOFFSET() Eksempler i SQL Server

I SQL Server er SWITCHOFFSET() funktion kan bruges til at returnere en dato-tidsforskydning værdi, der ændres fra den gemte tidszoneforskydning til en specificeret ny tidszoneforskydning.

Nedenfor er eksempler på, hvordan denne funktion fungerer.

Syntaks

For det første er syntaksen sådan her:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Hvor DATETIMEOFFSET er et udtryk, der kan opløses til en datetimeoffset(n) værdi og time_zone er en tegnstreng i formatet [+|-]TZH:TZM eller et fortegnet heltal (af minutter), der repræsenterer tidszoneforskydningen og antages at være sommertidsbevidst og justeret.

Resultatet returneres som en datotidsforskydning med brøkpræcisionen af ​​DATETIMEOFFSET argument.

Eksempel 1

Her er et grundlæggende eksempel på brug:

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

Resultat:

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

Eksempel 2

Dette eksempel bruger en negativ værdi:

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

Resultat:

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

Eksempel 4

I dette eksempel erklærer vi en variabel og tildeler den en dato ved hjælp af datetime offset datatype. Vi anvender derefter SWITCHOFFSET() til den dato og sammenlign den med den oprindelige dato.

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

Resultat:

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

Eksempel 5

Her gør vi det samme som det forrige eksempel, men vi bruger SYSDATETIMEOFFSET() funktion til at generere den aktuelle dato/tid og offset.

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

Resultat:

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

Eksempel 6

Dette eksempel er det samme som det foregående, bortset fra at vi tilføjer en negativ værdi.

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

Resultat:

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

Eksempel 7

Du kan også angive tidszoneforskydningen som et heltal i stedet for en streng:

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

Resultat:

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

  1. Sådan fungerer Setseed() i PostgreSQL

  2. Sådan eksporteres tomme tabeller i Oracle

  3. Naturlig (menneskelig alfanumerisk) sortering i Microsoft SQL 2005

  4. Hvordan taler Access med ODBC-datakilder? Del 5