In Oracle Database, puoi utilizzare fm
(modalità riempimento) modificatore di formato per eliminare eventuali zeri iniziali che potrebbero essere applicati a una data. Questo modificatore di formato sopprime il riempimento, che include zeri iniziali e spazi finali.
Per utilizzare il fm
modificatore di formato, includilo nel tuo modello di formato quando specifichi come formattare le date. Ad esempio quando si utilizza TO_CHAR()
per formattare le date o in parametri NLS come NLS_DATE_FORMAT
parametro quando si imposta il formato della data per la sessione corrente.
Esempio
Ecco un esempio da dimostrare:
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;
Risultato:
Without fm With fm _____________ __________ 01-08-09 1-8-9
Possiamo vedere che il risultato originale (senza fm
modificatore) restituisce zeri iniziali per tutte le parti della data. In questo caso, il fm
modificatore ha soppresso lo zero iniziale su tutte e tre le parti della data.
Il fm
modificatore influisce sul risultato solo se ci sono effettivamente zeri iniziali nel risultato.
Ecco una data che include parti della data che occupano due cifre e quindi non hanno zeri iniziali:
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;
Risultato:
Without fm With fm _____________ __________ 01-12-29 1-12-29
Come specificare la modalità di riempimento solo su alcune parti della data
L'esempio precedente ha soppresso lo zero iniziale su tutte le parti della data. Lo zero iniziale è stato rimosso dal giorno, dal mese e dall'anno. Questo perché, quando posizioniamo un singolo fm
all'inizio del modello di formato, sopprime tutto zeri iniziali successivi nel risultato.
Supponiamo di voler rimuovere solo lo zero iniziale dal giorno e dal mese, ma mantenerlo sull'anno. In questo caso, possiamo fare quanto segue:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;
Risultato:
1-8-09
Il fm
modificatore funziona fondamentalmente come un interruttore. Quando ne includi uno, sopprime gli zeri fino alla fine o finché non incontra un altro fm
modificatore. Se c'è un secondo fm
modificatore, quindi gli zeri iniziali non vengono soppressi oltre quel punto e così via.
Ecco cosa succede quando includiamo tre fm
modificatori – uno prima di ogni parte della data:
SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;
Risultato:
1-08-9
Quindi in questo caso, il fm
modificatore è stato sostanzialmente abilitato, quindi disabilitato, quindi abilitato di nuovo.
Parametri NLS
Puoi anche specificare la modalità di riempimento nei parametri NLS, come NLS_DATE_FORMAT
parametro durante l'impostazione del formato della data per la sessione corrente.
Esempio:
ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';
SELECT DATE '2009-08-07' FROM DUAL;
Risultato:
7-8-09