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

Funkce TO_YMINTERVAL() v Oracle

V databázi Oracle, TO_YMINTERVAL() funkce převede svůj argument na hodnotu INTERVAL MONTH TO YEAR datový typ.

Syntaxe

Syntaxe vypadá takto:

TO_YMINTERVAL
  ( '  { [+|-] years - months 
       | ym_iso_format 
       } '
    [ DEFAULT return_value ON CONVERSION ERROR ]
  )

Máte možnost předat argument ve formátu SQL nebo ISO.

Zde je rozdíl:

  • sql_format je formát intervalů SQL kompatibilní se standardem SQL (ISO/IEC 9075).
  • ds_iso_format je formát trvání ISO kompatibilní se standardem ISO 8601:2004.

Ve formátu SQL years je celé číslo mezi 0 a 999999999 a months je celé číslo mezi 0 a 11. Mezi prvky formátu jsou povoleny další mezery.

Ve formátu ISO (syntaxe níže) jsou roky a měsíce celá čísla mezi 0 a 999999999. Dny, hours , minutes , seconds a frac_secs jsou nezáporná celá čísla a jsou ignorována, pokud je uvedena. V hodnotě nejsou povoleny žádné mezery. Pokud zadáte T , pak musíte zadat alespoň jednu z hours , minutes nebo seconds hodnoty.

Syntaxe pro ds_iso_format vypadá takto:

[-] P [ years Y ] [months M] [days D]
  [T [hours H] [minutes M] [seconds [. frac_secs] S ] ]

Příklady

Zde je několik příkladů k demonstraci.

Formát SQL

Zde předám argument ve formátu SQL:

SELECT TO_YMINTERVAL('1-2')
FROM DUAL;

Výsledek:

+01-02

V tomto případě jsem prošel rok a dva měsíce ve formátu SQL.

V případě potřeby jej můžeme předřadit jeho znaménkem. Překlopíme to do záporu:

SELECT TO_YMINTERVAL('-1-2')
FROM DUAL;

Výsledek:

-01-02

Formát ISO

V tomto příkladu předávám stejnou hodnotu, ale ve formátu ISO:

SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL;

Výsledek:

+01-02

Zde je se zápornou hodnotou:

SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL;

Výsledek:

-01-02

Zadejte výchozí hodnotu při chybě převodu

Máte také možnost zadat hodnotu, která se vrátí v případě, že dojde k chybě při převodu argumentu na INTERVAL MONTH TO YEAR typ.

Příklad:

SELECT 
    TO_YMINTERVAL(
    '1y-02m'
    DEFAULT '00-00' ON CONVERSION ERROR
    )
FROM DUAL;

Výsledek:

+00-00

Nulové argumenty

Předávání null výsledkem je null :

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

Výsledek:

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.

Neplatný počet argumentů

Volání funkce bez předání jakýchkoli argumentů má za následek chybu:

SELECT TO_YMINTERVAL()
FROM DUAL;

Výsledek:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function

A předání příliš mnoha argumentů vede k chybě:

SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
FROM DUAL;

Výsledek:

SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"

  1. Jak nahradit část řetězce v SQL

  2. jak zkopírovat data ze souboru do PostgreSQL pomocí JDBC?

  3. Existuje způsob, jak procházet proměnnou tabulky v TSQL bez použití kurzoru?

  4. Jak získat přístup k MySQL pomocí kořenového uživatele MySQL