sql >> Databasteknik >  >> RDS >> Sqlserver

SWITCHOFFSET() Exempel i SQL Server

I SQL Server, SWITCHOFFSET() funktionen kan användas för att returnera en datumtidsförskjutning värde som ändras från den lagrade tidszonsförskjutningen till en specificerad ny tidszonsförskjutning.

Nedan finns exempel på hur den här funktionen fungerar.

Syntax

Först, så här går syntaxen till:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Där DATETIMEOFFSET är ett uttryck som kan lösas till en datetimeoffset(n) värde och time_zone är en teckensträng i formatet [+|-]TZH:TZM eller ett heltal med tecken (av minuter) som representerar tidszonens förskjutning och antas vara sommartidsmedveten och justerad.

Resultatet returneras som en datumtidsförskjutning med samma precision som DATETIMEOFFSET argument.

Exempel 1

Här är ett grundläggande exempel på användning:

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

Resultat:

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

Exempel 2

Det här exemplet använder ett negativt värde:

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

Resultat:

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

Exempel 4

I det här exemplet deklarerar vi en variabel och tilldelar den ett datum med datetimeoffset data typ. Vi tillämpar sedan SWITCHOFFSET() till det datumet och jämför det med det ursprungliga datumet.

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

Exempel 5

Här gör vi samma sak som föregående exempel, men vi använder SYSDATETIMEOFFSET() funktion för att generera aktuellt datum/tid och 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

Exempel 6

Det här exemplet är detsamma som det föregående, förutom att vi lägger till ett negativt värde.

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

Exempel 7

Du kan också ange tidszonsförskjutningen som ett heltal istället för en sträng:

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

Resultat:

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

  1. MySQL Lägg till främmande nyckel

  2. Är ordning i en underfråga garanterad att bevaras?

  3. Hur Tan() fungerar i PostgreSQL

  4. Välja ett SQL Server-övervakningsverktyg som passar dina behov