sql >> Databáze >  >> RDS >> Oracle

3 způsoby, jak vrátit časové pásmo z hodnoty Datetime v Oracle

Níže jsou uvedeny tři způsoby, jak vrátit informace o časovém pásmu z hodnoty datetime v databázi Oracle.

EXTRACT() Funkce

EXTRACT(datetime) Funkce se používá k extrahování různých částí data a času z hodnoty datetime. To zahrnuje informace o časovém pásmu.

Zde je příklad:

SELECT EXTRACT(
TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin'
)
FROM DUAL;

Výsledek:

Australia/Darwin

V tomto případě jsem použil TIMEZONE_REGION argument pro extrahování oblasti časového pásma.

Dostupné argumenty pro extrahování různých informací o časovém pásmu jsou:

  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE
  • TIMEZONE_REGION
  • TIMEZONE_ABBR

Je také možné použít TIMEZONE_OFFSET argument, i když se to neobjevuje v dokumentované syntaxi Oracle pro tuto funkci.

Zde je příklad získání zkratky časového pásma:

SELECT 
    EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
FROM DUAL;

Výsledek:

ACST

Pamatujte, že při použití výše uvedených argumentů časového pásma se hodnota datetime musí vyhodnotit jako výraz datového typu TIMESTAMP WITH TIME ZONE nebo TIMESTAMP WITH LOCAL TIME ZONE .

EXTRACT() funkce také přijímá argumenty pro další části data a času, jako je YEAR , MONTH , HOUR , atd.

TO_CHAR(datetime) Funkce

Můžeme také použít TO_CHAR(datetime) fungovat jako alternativní metoda k získání informací o časovém pásmu z hodnoty datetime.

Tato funkce přijímá jako svůj první argument hodnotu datetime nebo interval a jako druhý argument model formátu. Funkce pak převede hodnotu na datový typ VARCHAR2 v zadaném formátu.

Model formátu určuje formát, pro který má být vrácena hodnota datetime/interval. Model formátu se skládá z jednoho nebo více prvků formátu. To nám umožňuje pečlivě vytvářet výsledky tak, aby odrážely náš požadovaný formát.

Pokud chceme vrátit pouze informace o časovém pásmu, můžeme pro tento konkrétní účel použít jeden z prvků formátu.

Existuje několik různých prvků formátu, které můžeme použít při vracení informací o časovém pásmu z hodnoty datetime.

Začněme s TZR prvek formátu:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZR'
    )
FROM DUAL;

Výsledek:

AUSTRALIA/DARWIN

Tento prvek formátu vrací oblast časového pásma. Pokud hodnota datetime obsahuje pouze posun časového pásma, je místo toho vráceno.

TZD formátovací prvek lze použít k vrácení informací o letních měsících. Vrací informace o časovém pásmu ve zkrácené podobě.

Příklad:

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZD'
    )
FROM DUAL;

Výsledek:

ACST

Případně můžeme použít TZH a TZM formátovat prvky tak, aby vracely hodiny a minuty časového pásma na základě posunu časového pásma.

SELECT TO_CHAR(
    TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin', 
    'TZH:TZM'
    )
FROM DUAL;

Výsledek:

+09:30

Položka TZ_OFFSET() Funkce

TZ_OFFSET() funkce vrací posun časové zóny odpovídající argumentu na základě data provedení příkazu.

Zde je příklad použití TZ_OFFSET() vrátit posun časového pásma na základě regionu časového pásma vráceného funkcí EXTRACT() funkce:

SELECT TZ_OFFSET(
    EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2035-09-26 10:30:45 Australia/Darwin')
)
FROM DUAL;

Výsledek:

+09:30

Můžeme také předat SESSIONTIMEZONE nebo DBTIMEZONE na TZ_OFFSET() vrátit časové pásmo naší aktuální relace a databáze:

SELECT 
    TZ_OFFSET(SESSIONTIMEZONE) AS "Session",
    TZ_OFFSET(DBTIMEZONE) AS "DB"
FROM DUAL;

Výsledek:

   Session        DB 
__________ _________ 
+10:00     +00:00    

  1. cizí klíč SQLite

  2. SELECT v zobrazení obsahuje poddotaz v klauzuli FROM

  3. Laravel 5.2 – Použít řetězec jako vlastní primární klíč pro výmluvnou tabulku se stane 0

  4. Jak monitorovat nasazení MySQL pomocí Prometheus &Grafana na ScaleGrid