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

Funkce NEW_TIME() v Oracle

V databázi Oracle je NEW_TIME() funkce převede datum ze zadaného časového pásma do jiného určeného časového pásma a vrátí výsledek.

Syntaxe

Syntaxe vypadá takto:

NEW_TIME(date, timezone1, timezone2)

Funkce tedy vrací datum a čas v časovém pásmu timezone2 kdy je datum a čas v časovém pásmu timezone1 jsou date .

Pamatujte, že před použitím této funkce budete muset nastavit NLS_DATE_FORMAT parametr pro zobrazení 24hodinového času.

Argumenty timezone1 a timezone2 může být kterýkoli z těchto textových řetězců:

AST nebo ADT Atlantický standardní nebo letní čas
BST nebo BDT Beringův standardní nebo letní čas
CST nebo CDT Standardní nebo letní čas
EST nebo EDT Východní standardní nebo letní čas
GMT Greenwichský střední čas
HST nebo HDT Aljašsko-Havajský standardní čas nebo letní čas
MST nebo MDT horský standardní nebo letní čas
NST Newfoundlandský standardní čas
PST nebo PDT Standardní tichomořský nebo letní čas
YST nebo YDT Yukonský standardní nebo letní čas

Příklad

Zde je příklad:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

SELECT
    NEW_TIME(
        TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 
        'AST', 
        'PST'
        )
FROM DUAL;

Výsledek:

2030-03-01 08:30:45

Jak již bylo zmíněno, při použití této funkce NLS_DATE_FORMAT parametr musí být nastaven tak, aby zobrazoval 24hodinový čas, takže to dělá první řádek ve výše uvedeném příkladu. Tento řádek můžete vynechat, pokud je vaše relace NLS_DATE_FORMAT parametr již používá 24hodinový čas. Další příklady nastavení formátu data pro aktuální relaci naleznete v části Jak nastavit formát data relace.

Nulové argumenty

Pokud je některý argument null , výsledkem je null :

SET NULL 'null';

SELECT
    NEW_TIME(null, 'AST', 'ADT') AS "1",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), null, 'ADT') AS "2",
    NEW_TIME(TO_DATE('2030-03-01 12:30:45', 'YYYY-MM-DD HH24:MI:SS'), 'AST', null) AS "3"
FROM DUAL;

Výsledek:

      1       2       3 
_______ _______ _______ 
null    null    null   

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Chybí argument

Volání NEW_TIME() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT NEW_TIME()
FROM DUAL;

Výsledek:

Error starting at line : 1 in command -
SELECT NEW_TIME()
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. MySQL REPLACE() – Nahradí všechny instance podřetězce jiným řetězcem

  2. Chyba v MySQL při nastavování výchozí hodnoty pro DATE nebo DATETIME

  3. Převeďte hex v textové reprezentaci na desítkové číslo

  4. Drag and Drop v MS Access a podmíněné třídění