web-dev-qa-db-fra.com

Comment supprimer les zéros non significatifs des valeurs de jour et de mois dans Oracle, lors de l'analyse en chaîne à l'aide de la fonction to_char?

Je souhaite récupérer une date sans les zéros non significatifs devant les valeurs de jour et de mois dans une instruction select. Si j'exécute la requête suivante

 select to_char(sysdate, 'dd.mm.yyyy') from dual;

J'obtiendrai le 21.03.2014 en conséquence. De plus, si aujourd'hui était, par exemple, le 7 mars 2014, j'obtiendrais le 07.03.2014. Comment puis-je me débarrasser de ces zéros non significatifs?

17
Yulian
select   to_char(sysdate,'DD.MM.YY') -- Without Fill Mode
,        to_char(sysdate-20,'fmDD.fmMM.YY')  -- With Fill Mode, 20 days ago
  from dual;

Retour

21.03.14    | 1.3.14

Mode FM Fill.

Dans un élément de format datetime d'une fonction TO_CHAR, ce modificateur supprime les blancs dans les éléments de caractère suivants (tels que MONTH) et supprime les zéros de tête pour les éléments numériques suivants (tels que MI) dans un modèle de format de date. Sans FM, le résultat d'un élément de caractère est toujours rempli à droite avec des blancs à une longueur fixe, et les zéros de tête sont toujours renvoyés pour un élément numérique. Avec FM, qui supprime le remplissage vierge, la longueur de la valeur de retour peut varier.

43
Rob van Laarhoven

Essaye ça:

select to_char(to_date('20-oct-2000'),'fmmm/dd/fmrr') from dual

La requête ci-dessus supprimera les zéros non significatifs des valeurs de jour et de mois dans Oracle.

2
sen

C'est assez loin d'être élégant mais ça marche:

select to_number(to_char(sysdate,'dd')) || '.' || to_number(to_char(sysdate,'mm')) || '.' || to_number(to_char(sysdate,'yyyy')) from dual

Fondamentalement, vous convertiriez pour numéroter chaque partie de la date

0
pablomatico