In der Oracle-Datenbank der TO_YMINTERVAL()
Funktion konvertiert ihr Argument in einen Wert von INTERVAL MONTH TO YEAR
Datentyp.
Syntax
Die Syntax lautet wie folgt:
TO_YMINTERVAL
( ' { [+|-] years - months
| ym_iso_format
} '
[ DEFAULT return_value ON CONVERSION ERROR ]
)
Sie haben die Möglichkeit, das Argument im SQL-Format oder im ISO-Format zu übergeben.
Hier ist der Unterschied:
sql_format
ist ein mit dem SQL-Standard (ISO/IEC 9075) kompatibles SQL-Intervallformat.ds_iso_format
ist ein ISO-Dauerformat, das mit dem ISO 8601:2004-Standard kompatibel ist.
Im SQL-Format years
ist eine ganze Zahl zwischen 0 und 999999999 und months
ist eine ganze Zahl zwischen 0 und 11. Zwischen den Formatelementen sind zusätzliche Leerzeichen erlaubt.
Im ISO-Format (Syntax unten) sind Jahre und Monate Ganzzahlen zwischen 0 und 999999999. Tage, hours
, minutes
, seconds
und frac_secs
sind nicht negative ganze Zahlen und werden ignoriert, falls angegeben. Im Wert sind keine Leerzeichen erlaubt. Wenn Sie T
angeben , dann müssen Sie mindestens eine der hours
angeben , minutes
, oder seconds
Werte.
Die Syntax für ds_iso_format
geht so:
[-] P [ years Y ] [months M] [days D]
[T [hours H] [minutes M] [seconds [. frac_secs] S ] ]
Beispiele
Hier sind einige Beispiele zur Veranschaulichung.
SQL-Format
Hier übergebe ich das Argument im SQL-Format:
SELECT TO_YMINTERVAL('1-2')
FROM DUAL;
Ergebnis:
+01-02
In diesem Fall habe ich ein Jahr und zwei Monate im SQL-Format verbracht.
Wir können ihm bei Bedarf sein Vorzeichen voranstellen. Drehen wir es um ins Negative:
SELECT TO_YMINTERVAL('-1-2')
FROM DUAL;
Ergebnis:
-01-02
ISO-Format
In diesem Beispiel übergebe ich den gleichen Wert, aber im ISO-Format:
SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL;
Ergebnis:
+01-02
Hier ist es mit einem negativen Wert:
SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL;
Ergebnis:
-01-02
Bei Konvertierungsfehler einen Standardwert angeben
Sie haben auch die Möglichkeit, einen Wert anzugeben, der zurückgegeben werden soll, falls beim Konvertieren des Arguments in ein INTERVAL MONTH TO YEAR
ein Fehler auftritt Typ.
Beispiel:
SELECT
TO_YMINTERVAL(
'1y-02m'
DEFAULT '00-00' ON CONVERSION ERROR
)
FROM DUAL;
Ergebnis:
+00-00
Null-Argumente
Übergabe von null
ergibt null
:
SET NULL 'null';
SELECT
TO_YMINTERVAL(null)
FROM DUAL;
Ergebnis:
null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Ungültige Argumentanzahl
Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT TO_YMINTERVAL()
FROM DUAL;
Ergebnis:
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function
Und das Übergeben zu vieler Argumente führt zu einem Fehler:
SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
FROM DUAL;
Ergebnis:
SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function"