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?
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.
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.
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