Oracle Database nous offre la possibilité de renvoyer le mois à partir d'une date en utilisant des chiffres romains.
Par exemple, si le mois est août, sa valeur décimale serait 08 et son équivalent en chiffres romains serait VIII.
La façon de le faire est d'utiliser le RM
ou rm
élément de format dans votre masque de format. Cela formatera le mois en utilisant des chiffres romains en majuscules ou en minuscules respectivement.
La spécification du format de date peut être effectuée à plusieurs endroits.
Spécifier les chiffres romains lors de l'appel d'une fonction
Voici un exemple de spécification de chiffres romains lors du formatage d'une date avec le TO_CHAR(datetime)
fonction :
SELECT TO_CHAR(DATE '2035-08-11', 'DD RM YYYY') FROM DUAL;
Résultat :
11 VIII 2035
Dans ce cas, j'ai spécifié des chiffres romains majuscules.
Pour spécifier des minuscules, changez simplement le RM
à rm
:
SELECT TO_CHAR(DATE '2035-08-11', 'DD rm YYYY') FROM DUAL;
Résultat :
11 viii 2035
Voir la liste des éléments de format Datetime dans Oracle pour une liste complète des éléments de format pouvant être utilisés pour formater les valeurs datetime.
Spécifier les chiffres romains pour toute la session
Vous pouvez également définir le format de date pour l'ensemble de votre session. Cela peut être utile si vous devez faire beaucoup d'appels de fonction qui renvoient la date.
Il existe trois paramètres pertinents :NLS_DATE_FORMAT
, NLS_TIMESTAMP_FORMAT
, et NLS_TIMESTAMP_TZ_FORMAT
.
Ces paramètres ont des valeurs par défaut dérivées du NLS_TERRITORY
paramètre (qui a une valeur par défaut qui dépend du système d'exploitation). Cependant, vous pouvez mettre à jour n'importe lequel de ces paramètres pour la session en cours si nécessaire.
Voici un exemple de mise à jour de ces paramètres pour utiliser un format de date qui inclut des chiffres romains pour la partie mois :
ALTER SESSION SET NLS_DATE_FORMAT = 'DD RM YYYY';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'DD RM YYYY HH12:MI:SSXFF AM TZR';
Résultat :
Session altered. Session altered. Session altered.
Maintenant, lorsque j'appelle une fonction qui renvoie une valeur datetime, j'obtiens le mois en chiffres romains.
Exemple :
SELECT TO_CHAR(SYSDATE) FROM DUAL;
Résultat :
10 VIII 2021
Notez que j'ai passé SYSDATE
à TO_CHAR()
.
Si je ne le fais pas, le NLS_DATE_FORMAT
le paramètre ne prend pas effet :
SELECT SYSDATE FROM DUAL;
Résultat :
2021-08-10 20:04:49
Ce problème n'existe pas avec les autres formats de date. Je ne l'ai rencontré qu'avec des chiffres romains.
Une solution plus permanente
Les exemples ci-dessus sont des solutions temporaires pour retourner le mois en chiffres romains. Pour une solution plus permanente, les paramètres NLS peuvent être définis au niveau de la base de données, dans le fichier de paramètres d'initialisation ou dans des variables d'environnement. Voir Méthodes de définition des paramètres NLS et leurs priorités pour des exemples, ainsi que leur ordre de priorité les uns par rapport aux autres.