I Oracle Database, TO_YMINTERVAL() funktion konverterar sitt argument till värdet INTERVAL MONTH TO YEAR datatyp.
Syntax
Syntaxen ser ut så här:
TO_YMINTERVAL
( ' { [+|-] years - months
| ym_iso_format
} '
[ DEFAULT return_value ON CONVERSION ERROR ]
) Du har möjlighet att skicka argumentet i SQL-format eller ISO-format.
Här är skillnaden:
sql_formatär SQL-intervallformat kompatibelt med SQL-standarden (ISO/IEC 9075).ds_iso_formatär ISO-varaktighetsformat kompatibelt med ISO 8601:2004-standarden.
I SQL-format, years är ett heltal mellan 0 och 999999999 och months är ett heltal mellan 0 och 11. Ytterligare tomrum är tillåtna mellan formatelement.
I ISO-format (syntax nedan) är år och månader heltal mellan 0 och 999999999. Dagar, hours , minutes , seconds och frac_secs är icke-negativa heltal och ignoreras, om det anges. Inga blanksteg är tillåtna i värdet. Om du anger T , då måste du ange minst en av hours , minutes , eller seconds värden.
Syntaxen för ds_iso_format går så här:
[-] P [ years Y ] [months M] [days D]
[T [hours H] [minutes M] [seconds [. frac_secs] S ] ] Exempel
Här är några exempel att visa.
SQL-format
Här skickar jag argumentet i SQL-format:
SELECT TO_YMINTERVAL('1-2')
FROM DUAL; Resultat:
+01-02
I det här fallet klarade jag ett år och två månader i SQL-format.
Vi kan förse den med dess tecken om det behövs. Låt oss vända det till ett negativt:
SELECT TO_YMINTERVAL('-1-2')
FROM DUAL; Resultat:
-01-02
ISO-format
I det här exemplet skickar jag samma värde, men i ISO-format:
SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL; Resultat:
+01-02
Här är det med ett negativt värde:
SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL; Resultat:
-01-02
Ange ett standardvärde vid konverteringsfel
Du har också möjlighet att ange ett värde som ska returneras i händelse av att det uppstår ett fel när argumentet konverteras till en INTERVAL MONTH TO YEAR typ.
Exempel:
SELECT
TO_YMINTERVAL(
'1y-02m'
DEFAULT '00-00' ON CONVERSION ERROR
)
FROM DUAL; Resultat:
+00-00
Nollargument
Skickar null resulterar i null :
SET NULL 'null';
SELECT
TO_YMINTERVAL(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.
Ogiltigt antal argument
Att anropa funktionen utan att skicka några argument resulterar i ett fel:
SELECT TO_YMINTERVAL()
FROM DUAL; Resultat:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function
Och att skicka för många argument resulterar i ett fel:
SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
FROM DUAL; Resultat:
SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function"