sql >> Databasteknik >  >> RDS >> Oracle

TZ_OFFSET() Funktion i Oracle

I Oracle Database, TZ_OFFSET() funktion returnerar tidszonsförskjutningen som motsvarar argumentet baserat på datumet då satsen exekveras.

Syntax

Syntaxen ser ut så här:

TZ_OFFSET({ 'time_zone_name'
          | '{ + | - } hh : mi'
          | SESSIONTIMEZONE
          | DBTIMEZONE
          }
         )

Exempel

Här är några exempel att visa.

Tidszonens regionsnamn

Du kan skicka ett giltigt tidszonsregionsnamn:

SELECT TZ_OFFSET('Australia/Darwin')
FROM DUAL;

Resultat:

+09:30

Så här får du en lista över tidszoner som stöds i ditt system.

Tidszonsförskjutning

Du kan skicka en tidszonförskjutning, i vilket fall den helt enkelt returnerar sig själv:

SELECT TZ_OFFSET('-10:00')
FROM DUAL;

Resultat:

-10:00

SESSIONTIMEZONE Funktion

SESSIONTIMEZONE funktion returnerar tidszonen för den aktuella sessionen. Du kan använda detta för att få tidszonförskjutningen för din nuvarande session.

Exempel:

SELECT 
    SESSIONTIMEZONE,
    TZ_OFFSET(SESSIONTIMEZONE)
FROM DUAL;

Resultat i min session:

      SESSIONTIMEZONE    TZ_OFFSET(SESSIONTIMEZONE) 
_____________________ _____________________________ 
Australia/Brisbane    +10:00                       

DBTIMEZONE Funktion

DBTIMEZONE funktion returnerar tidszonen för databasen. Detta kan vara detsamma som SESSIONTIMEZONE på ditt system.

Exempel:

SELECT 
    DBTIMEZONE,
    TZ_OFFSET(DBTIMEZONE)
FROM DUAL;

Resultat:

   DBTIMEZONE    TZ_OFFSET(DBTIMEZONE) 
_____________ ________________________ 
+00:00        +00:00                  

Nollargument

Skickar null resulterar i null :

SET NULL 'null';
SELECT TZ_OFFSET(null)
FROM DUAL;

Resultat:

null

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Argument saknas

Att anropa funktionen med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT TZ_OFFSET()
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT TZ_OFFSET()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Kopiera data till en annan tabell

  2. GROUP BY utan aggregatfunktion

  3. Hur man installerar pgAdmin 4 på Ubuntu 20.04/18.04/16.04

  4. SQLite - Någon skillnad mellan tabell-restrikt UNIQUE och kolumn-constraint UNIQUE?