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

Comment supprimer le bon rembourrage sur le nom du jour dans Oracle

Dans Oracle Database, lors de l'utilisation de TO_CHAR() pour renvoyer le nom du jour à partir d'une date, un remplissage sera ajouté au nom du jour s'il est plus court que le nom de jour valide le plus long pour la langue et le calendrier donnés.

Eh bien, c'est le comportement par défaut. Cependant, vous pouvez modifier cela si vous le souhaitez.

Pour supprimer ce rembourrage, tout ce que vous avez à faire est de faire précéder l'élément de format du nom du jour de fm .

Exemple

Supposons que nous exécutons le code suivant :

SELECT 
    TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;

Résultat :

Friday   , 08 March     2030

Nous pouvons voir que des espaces de fin ont été ajoutés au nom du jour et au nom du mois.

Nous pouvons utiliser le fm modificateur de format pour supprimer cet espace :

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;

Résultat :

Friday, 8 March 2030

Problème résolu.

Notez que cela avait également l'avantage secondaire de supprimer les espaces de fin du nom du mois.

Il a également supprimé le zéro non significatif du numéro du jour.

Nous pouvons utiliser plusieurs fm modificateurs pour être plus précis sur le rembourrage que nous voulons supprimer. Chaque fm dans notre modèle de format, active et désactive le mode de remplissage.

Supposons que nous souhaitions supprimer les espaces de fin des noms de jour et de mois, mais que nous souhaitions conserver le zéro de tête sur le numéro du jour. Dans ce cas, nous pouvons procéder comme suit :

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;

Résultat :

Friday   , 08 March     2030

La raison pour laquelle nous avons utilisé un troisième fm (devant MONTH ) est parce que le deuxième fm a réactivé le rembourrage pour tous les éléments de format suivants, ce qui aurait pour effet de conserver les espaces de fin pour le mois.

Voici ce que je veux dire :

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;

Résultat :

Friday, 08 March     2030 

Dans ce cas, le rembourrage a été supprimé du nom du jour, puis réactivé pour le numéro du jour, le mois et l'année.

Heureusement, on peut ajouter autant de fm modificateurs dont nous avons besoin pour obtenir le résultat souhaité.