Dans Oracle Database, le TO_YMINTERVAL()
la fonction convertit son argument en une valeur de INTERVAL MONTH TO YEAR
type de données.
Syntaxe
La syntaxe ressemble à ceci :
TO_YMINTERVAL
( ' { [+|-] years - months
| ym_iso_format
} '
[ DEFAULT return_value ON CONVERSION ERROR ]
)
Vous avez la possibilité de passer l'argument au format SQL ou au format ISO.
Voici la différence :
sql_format
est un format d'intervalle SQL compatible avec la norme SQL (ISO/IEC 9075).ds_iso_format
est un format de durée ISO compatible avec la norme ISO 8601:2004.
Au format SQL, years
est un entier compris entre 0 et 999999999, et months
est un entier compris entre 0 et 11. Des espaces supplémentaires sont autorisés entre les éléments de format.
Au format ISO (syntaxe ci-dessous), les années et les mois sont des nombres entiers compris entre 0 et 999999999. Jours, hours
, minutes
, seconds
, et frac_secs
sont des entiers non négatifs et sont ignorés, s'ils sont spécifiés. Aucun espace n'est autorisé dans la valeur. Si vous spécifiez T
, alors vous devez spécifier au moins une des hours
, minutes
, ou seconds
valeurs.
La syntaxe de ds_iso_format
va comme ceci :
[-] P [ years Y ] [months M] [days D]
[T [hours H] [minutes M] [seconds [. frac_secs] S ] ]
Exemples
Voici quelques exemples à démontrer.
Format SQL
Ici, je passe l'argument au format SQL :
SELECT TO_YMINTERVAL('1-2')
FROM DUAL;
Résultat :
+01-02
Dans ce cas, j'ai passé un an et deux mois au format SQL.
On peut le faire précéder de son signe si nécessaire. Renversons-le en négatif :
SELECT TO_YMINTERVAL('-1-2')
FROM DUAL;
Résultat :
-01-02
Format ISO
Dans cet exemple je passe la même valeur, mais au format ISO :
SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL;
Résultat :
+01-02
Le voici avec une valeur négative :
SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL;
Résultat :
-01-02
Fournir une valeur par défaut en cas d'erreur de conversion
Vous avez également la possibilité de fournir une valeur à renvoyer en cas d'erreur lors de la conversion de l'argument en un INTERVAL MONTH TO YEAR
saisir.
Exemple :
SELECT
TO_YMINTERVAL(
'1y-02m'
DEFAULT '00-00' ON CONVERSION ERROR
)
FROM DUAL;
Résultat :
+00-00
Arguments nuls
Passer null
donne null
:
SET NULL 'null';
SELECT
TO_YMINTERVAL(null)
FROM DUAL;
Résultat :
null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null
se produit à la suite d'un SQL SELECT
déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments non valides
L'appel de la fonction sans passer d'arguments génère une erreur :
SELECT TO_YMINTERVAL()
FROM DUAL;
Résultat :
SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function
Et passer trop d'arguments entraîne une erreur :
SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
FROM DUAL;
Résultat :
SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function"