Oracle
 sql >> Database >  >> RDS >> Oracle

Come rimuovere il riempimento corretto sul nome del giorno in Oracle

In Oracle Database, quando si utilizza TO_CHAR() funzione per restituire il nome del giorno da una data, il riempimento verrà aggiunto al nome del giorno se è più breve del nome del giorno più lungo valido per la lingua e il calendario indicati.

Bene, questo è il comportamento predefinito. Tuttavia, puoi modificarlo se lo desideri.

Per eliminare questo riempimento, tutto ciò che devi fare è anteporre l'elemento del formato del nome del giorno con fm .

Esempio

Supponiamo di eseguire il codice seguente:

SELECT 
    TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;

Risultato:

Friday   , 08 March     2030

Possiamo vedere che gli spazi finali sono stati aggiunti al nome del giorno e al nome del mese.

Possiamo usare il fm modificatore di formato per eliminare questo spazio:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;

Risultato:

Friday, 8 March 2030

Problema risolto.

Si noti che questo ha anche il vantaggio collaterale di sopprimere gli spazi finali dal nome del mese.

Ha anche soppresso lo zero iniziale dal numero del giorno.

Possiamo usare più fm modificatori per essere più specifici su quale riempimento vogliamo sopprimere. Ogni fm nel nostro modello di formato attiva e disattiva la modalità di riempimento.

Supponiamo di voler sopprimere gli spazi finali dai nomi di giorno e mese, ma di voler mantenere lo zero iniziale sul numero del giorno. In tal caso possiamo fare quanto segue:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;

Risultato:

Friday   , 08 March     2030

Il motivo per cui abbiamo usato un terzo fm (davanti a MONTH ) è perché il secondo fm riattivato il riempimento per tutti gli elementi di formato successivi, il che avrebbe comportato la conservazione degli spazi finali per il mese.

Ecco cosa intendo:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;

Risultato:

Friday, 08 March     2030 

In questo caso, il riempimento è stato eliminato dal nome del giorno e quindi riattivato per il numero del giorno, il mese e l'anno.

Fortunatamente, possiamo aggiungere altrettanti fm modificatori di cui abbiamo bisogno per ottenere il risultato desiderato.