In Oracle Database, bij gebruik van de TO_CHAR()
functie om de dagnaam van een datum te retourneren, opvulling wordt toegevoegd aan de dagnaam als deze korter is dan de langst geldige dagnaam voor de opgegeven taal en kalender.
Welnu, dat is het standaardgedrag. U kunt dit echter desgewenst wijzigen.
Om deze opvulling te onderdrukken, hoeft u alleen maar fm
voor het dagnaam-formaatelement te plaatsen .
Voorbeeld
Stel dat we de volgende code uitvoeren:
SELECT
TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;
Resultaat:
Friday , 08 March 2030
We kunnen zien dat er spaties achteraan zijn toegevoegd aan de naam van de dag en de naam van de maand.
We kunnen de fm
. gebruiken formaatmodifier om deze ruimte te onderdrukken:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;
Resultaat:
Friday, 8 March 2030
Probleem opgelost.
Merk op dat dit ook als bijkomend voordeel had dat de volgspaties van de maandnaam werden onderdrukt.
Het onderdrukte ook de voorloopnul van het dagnummer.
We kunnen meerdere fm
. gebruiken modifiers om specifieker te zijn over welke opvulling we willen onderdrukken. Elke fm
in ons formaatmodel schakelt de vulmodus aan en uit.
Stel dat we de volgspaties van de dag- en maandnamen willen onderdrukken, maar de voorloopnul op het dagnummer willen behouden. In dat geval kunnen we het volgende doen:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;
Resultaat:
Friday , 08 March 2030
De reden waarom we een derde fm
hebben gebruikt (voor MONTH
) is omdat de tweede fm
opvulling opnieuw ingeschakeld voor alle volgende indelingselementen, wat ertoe zou leiden dat de volgspaties voor de maand behouden blijven.
Dit is wat ik bedoel:
SELECT
TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;
Resultaat:
Friday, 08 March 2030
In dit geval werd de opvulling van de dagnaam onderdrukt en vervolgens weer ingeschakeld voor het dagnummer, de maand en het jaar.
Gelukkig kunnen we zoveel fm
. toevoegen modifiers die we nodig hebben om het gewenste resultaat te krijgen.