In Oracle Database kunt u de fm
(vulmodus) formaatmodificator om voorloopnullen te onderdrukken die op een datum kunnen worden toegepast. Deze opmaakmodifier onderdrukt opvulling, inclusief voorloopnullen en volgspaties.
Om de fm
te gebruiken formaatmodifier, neem het dan op in uw formaatmodel wanneer u specificeert hoe datums moeten worden opgemaakt. Bijvoorbeeld bij gebruik van de TO_CHAR()
functie om datums op te maken, of in NLS-parameters zoals de NLS_DATE_FORMAT
parameter bij het instellen van de datumnotatie voor uw huidige sessie.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
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;
Resultaat:
Without fm With fm _____________ __________ 01-08-09 1-8-9
We kunnen zien dat het oorspronkelijke resultaat (zonder de fm
modifier) retourneert voorloopnullen voor alle datumdelen. In dit geval is de fm
modifier onderdrukte de voorloopnul op alle drie de datumdelen.
De fm
modifier heeft alleen invloed op het resultaat als er daadwerkelijk voorloopnullen in het resultaat staan.
Hier is een datum die datumdelen bevat die uit twee cijfers bestaan en daarom geen voorloopnullen hebben:
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;
Resultaat:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Hoe de vulmodus alleen op sommige datumdelen te specificeren
Het bovenstaande voorbeeld onderdrukte de voorloopnul op alle datumdelen. De voorloopnul is verwijderd van de dag, de maand en het jaar. Dit komt omdat, wanneer we een enkele fm
. plaatsen aan het begin van het formaatmodel onderdrukt het alles volgende voorloopnullen in het resultaat.
Stel dat we alleen de voorloopnul van de dag en de maand willen verwijderen, maar deze op het jaar willen behouden. In dit geval kunnen we het volgende doen:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Resultaat:
1-8-09
De fm
modifier werkt in principe als een schakelaar. Als je er een opneemt, onderdrukt het nullen tot het einde, of totdat het een andere fm
tegenkomt modificator. Als er een tweede fm
. is modifier, dan worden voorloopnullen voorbij dat punt niet onderdrukt, enzovoort.
Dit is wat er gebeurt als we drie fm
. opnemen modifiers – één voor elk datumgedeelte:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Resultaat:
1-08-9
Dus in dit geval de fm
modifier was in principe ingeschakeld, vervolgens uitgeschakeld en vervolgens weer ingeschakeld.
NLS-parameters
U kunt ook de vulmodus specificeren in uw NLS-parameters, zoals de NLS_DATE_FORMAT
parameter bij het instellen van de datumnotatie voor uw huidige sessie.
Voorbeeld:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Resultaat:
7-8-09