Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment formater le mois en chiffres romains dans Oracle

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.