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

Comment supprimer les zéros non significatifs des dates dans Oracle

Dans Oracle Database, vous pouvez utiliser le fm (mode de remplissage) modificateur de format pour supprimer tous les zéros non significatifs qui pourraient être appliqués à une date. Ce modificateur de format supprime le remplissage, qui inclut les zéros de tête et les blancs de fin.

Pour utiliser le fm modificateur de format, incluez-le dans votre modèle de format lorsque vous spécifiez comment les dates doivent être formatées. Par exemple lors de l'utilisation de TO_CHAR() fonction pour formater les dates, ou dans les paramètres NLS tels que le NLS_DATE_FORMAT paramètre lors de la définition du format de date pour votre session en cours.

Exemple

Voici un exemple pour illustrer :

SELECT 
    TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Résultat :

   Without fm    With fm 
_____________ __________ 
01-08-09      1-8-9     

Nous pouvons voir que le résultat original (sans le fm modificateur) renvoie des zéros non significatifs pour toutes les parties de date. Dans ce cas, le fm modificateur a supprimé le zéro non significatif sur les trois parties de date.

Le fm Le modificateur n'affecte le résultat que s'il y a réellement des zéros non significatifs dans le résultat.

Voici une date qui comprend des parties de date qui occupent deux chiffres et qui n'ont donc pas de zéros non significatifs :

SELECT 
    TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Résultat :

   Without fm    With fm 
_____________ __________ 
01-12-29      1-12-29    

Comment spécifier le mode de remplissage uniquement sur certaines parties de date

L'exemple ci-dessus a supprimé le zéro non significatif sur toutes les parties de date. Le zéro initial a été supprimé du jour, du mois et de l'année. En effet, lorsque nous plaçons un seul fm au début du modèle de format, il supprime tout zéros non significatifs suivants dans le résultat.

Supposons que nous voulions uniquement supprimer le zéro initial du jour et du mois, mais le conserver sur l'année. Dans ce cas, nous pouvons procéder comme suit :

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Résultat :

1-8-09

Le fm Le modificateur fonctionne essentiellement comme un interrupteur. Lorsque vous en incluez un, il supprime les zéros jusqu'à la fin, ou jusqu'à ce qu'il rencontre un autre fm modificateur. S'il y a un deuxième fm modificateur, les zéros non significatifs ne sont pas supprimés au-delà de ce point, et ainsi de suite.

Voici ce qui se passe lorsque nous incluons trois fm modificateurs - un avant chaque partie de date :

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Résultat :

1-08-9

Donc dans ce cas, le fm Le modificateur était essentiellement activé, puis désactivé, puis réactivé.

Paramètres NLS

Vous pouvez également spécifier le mode de remplissage dans vos paramètres NLS, tels que le NLS_DATE_FORMAT paramètre lors de la définition du format de date pour votre session en cours.

Exemple :

ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';

SELECT DATE '2009-08-07' FROM DUAL;

Résultat :

7-8-09