I Oracle Database kan du bruge fm
(udfyldningstilstand) formatmodifikator for at undertrykke eventuelle foranstillede nuller, der kan anvendes på en dato. Denne formatmodifikator undertrykker polstring, som inkluderer foranstillede nuller og afsluttende blanktegn.
For at bruge fm
formatmodifikator, skal du inkludere det i din formatmodel, når du angiver, hvordan datoer skal formateres. For eksempel når du bruger TO_CHAR()
funktion til at formatere datoer eller i NLS-parametre såsom NLS_DATE_FORMAT
parameter, når du indstiller datoformatet for din aktuelle session.
Eksempel
Her er et eksempel til demonstration:
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;
Resultat:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Vi kan se, at det oprindelige resultat (uden fm
modifier) returnerer foranstillede nuller for alle datodele. I dette tilfælde er fm
modifier undertrykte det indledende nul på alle tre datodele.
fm
modifikator påvirker kun resultatet, hvis der faktisk er indledende nuller i resultatet.
Her er en dato, der inkluderer datodele, der fylder to cifre og derfor ikke har foranstillede nuller:
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;
Resultat:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Sådan angives kun udfyldningstilstand på nogle datodele
Ovenstående eksempel undertrykte det indledende nul på alle datodele. Det foranstillede nul blev fjernet fra dagen, måneden og året. Dette er fordi, når vi placerer en enkelt fm
i starten af formatmodellen undertrykker den alle efterfølgende indledende nuller i resultatet.
Antag, at vi kun ønsker at fjerne det foranstillede nul fra dagen og måneden, men beholde det på året. I dette tilfælde kan vi gøre følgende:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Resultat:
1-8-09
fm
modifikator fungerer grundlæggende som en switch. Når du inkluderer en, undertrykker den nuller indtil slutningen, eller indtil den støder på en anden fm
modifikator. Hvis der er en anden fm
modifikator, så undertrykkes indledende nuller ikke ud over det punkt, og så videre.
Her er, hvad der sker, når vi inkluderer tre fm
modifikatorer – en før hver datodel:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Resultat:
1-08-9
Så i dette tilfælde er fm
modifier var grundlæggende aktiveret, derefter deaktiveret og derefter aktiveret igen.
NLS-parametre
Du kan også angive udfyldningstilstand i dine NLS-parametre, såsom NLS_DATE_FORMAT
parameter ved indstilling af datoformatet for din aktuelle session.
Eksempel:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Resultat:
7-8-09