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"