sql >> Database >  >> RDS >> Sqlserver

TODATETIMEOFFSET() Voorbeelden in SQL Server

In SQL Server kunt u de TODATETIMEOFFSET() . gebruiken functie om een datetimeoffset . te retourneren waarde die is vertaald uit een datetime2 uitdrukking. Het accepteert twee argumenten; de datum en de offset die u op die datum wilt toepassen.

Hieronder staan ​​voorbeelden van gebruik.

Syntaxis

De syntaxis van TODATETIMEOFFSET() gaat als volgt:

TODATETIMEOFFSET ( expression , time_zone )

Waar expression is een uitdrukking die wordt omgezet in een datetime2 waarde, en time_zone is de tijdzone die u op die uitdrukking (datum) wilt toepassen.

U kunt de tijdzone in minuten of uren opgeven. Als je het in minuten opgeeft, gebruik dan een geheel getal (bijv. -120 ), gebruik anders om het in uren op te geven een tekenreeks (bijv. '+04.00' ). Het bereik voor de tijdzone is +14 tot -14 (uren).

De datum die u opgeeft, wordt ook geïnterpreteerd in lokale tijd voor de opgegeven tijdzone.

Voorbeeld 1

Hier is een eenvoudig gebruiksvoorbeeld:

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

Resultaat:

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

Voorbeeld 2 – Negatieve waarde

Dit is hetzelfde als het vorige voorbeeld, behalve dat ik in plaats daarvan een negatieve waarde gebruik:

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

Resultaat:

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

Voorbeeld 3 – Een datetime2-variabele gebruiken

In dit voorbeeld stel ik expliciet een variabele in met een datetime2 waarde, pas dan TODATETIMEOFFSET() toe met die waarde, en vergelijk de waarden:

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

Resultaat:

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

Zoals we in dit voorbeeld (en de vorige) kunnen zien, heeft de oorspronkelijke datumwaarde geen datetime offset-informatie (omdat het een datetime2 . is waarde), maar zodra we het door de TODATETIMEOFFSET() functie, eindigen we met een datetimeoffset gegevenstype.

Voorbeeld 4 – Een datetimeoffset-variabele gebruiken

Dit is vergelijkbaar met het vorige voorbeeld, behalve dat de oorspronkelijke datum is ingesteld als een datetimeoffset waarde:

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

Resultaat:

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

Voorbeeld 5 – De huidige datum/tijd gebruiken

In dit voorbeeld geef ik de SYSDATETIMEOFFSET() . door functie als de datumuitdrukking. Deze functie genereert de huidige datum/tijd van de computer waarop de SQL Server-instantie wordt uitgevoerd:

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

Resultaat:

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

Voorbeeld 6 – De tijdzone-offset als een geheel getal opgeven

Zoals vermeld, kunt u de tijdzone-offset ook als een geheel getal opgeven in plaats van een tekenreeks:

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

Resultaat:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -03:00


  1. Kunnen we meerdere WITH AS hebben in één sql - Oracle SQL?

  2. Top Open Source-tools voor MySQL- en MariaDB-migraties

  3. Sqlite3 voegt niet meerdere rijen in volgorde in

  4. PostgreSQL GROUP_CONCAT() Equivalent