Oracle
 sql >> Baza danych >  >> RDS >> Oracle

TO_YMINTERVAL() Funkcja w Oracle

W bazie danych Oracle TO_YMINTERVAL() funkcja konwertuje swój argument na wartość INTERVAL MONTH TO YEAR typ danych.

Składnia

Składnia wygląda tak:

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

Masz możliwość przekazania argumentu w formacie SQL lub formacie ISO.

Oto różnica:

  • sql_format to format interwału SQL zgodny ze standardem SQL (ISO/IEC 9075).
  • ds_iso_format to format czasu trwania ISO zgodny ze standardem ISO 8601:2004.

W formacie SQL, years jest liczbą całkowitą z zakresu od 0 do 999999999 oraz months jest liczbą całkowitą z przedziału od 0 do 11. Dodatkowe spacje są dozwolone między elementami formatu.

W formacie ISO (składnia poniżej) lata i miesiące są liczbami całkowitymi z zakresu od 0 do 999999999. Dni, hours , minutes , seconds i frac_secs są nieujemnymi liczbami całkowitymi i są ignorowane, jeśli określono. W wartości nie są dozwolone żadne spacje. Jeśli określisz T , musisz określić co najmniej jedną z hours , minutes lub seconds wartości.

Składnia ds_iso_format idzie tak:

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

Przykłady

Oto kilka przykładów do zademonstrowania.

Format SQL

Tutaj przekazuję argument w formacie SQL:

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

Wynik:

+01-02

W tym przypadku minął rok i dwa miesiące w formacie SQL.

W razie potrzeby możemy go poprzedzić jego znakiem. Odwróćmy to na negatyw:

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

Wynik:

-01-02

Format ISO

W tym przykładzie przekazuję tę samą wartość, ale w formacie ISO:

SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL;

Wynik:

+01-02

Tutaj jest z wartością ujemną:

SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL;

Wynik:

-01-02

Podaj wartość domyślną w przypadku błędu konwersji

Masz również możliwość podania wartości, która ma zostać zwrócona w przypadku wystąpienia błędu podczas konwersji argumentu na INTERVAL MONTH TO YEAR typ.

Przykład:

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

Wynik:

+00-00

Argumenty zerowe

Przekazywanie null wyniki w null :

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

Wynik:

null

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie funkcji bez przekazywania żadnych argumentów powoduje błąd:

SELECT TO_YMINTERVAL()
FROM DUAL;

Wynik:

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

A przekazanie zbyt wielu argumentów skutkuje błędem:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kontrola DB zbliża się do śmierci

  2. Nie można przekazać wartości ciągu 1,2 jako danych wejściowych do zapytania wyroczni

  3. ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia.

  4. Statystyki tabeli GTT i SYS.WRI$_OPTSTAT_TAB_HISTORY

  5. Skrypty administracyjne w R12.2 Ebuisness Suite