Funzione TO_CHAR

La funzione TO_CHAR converte i tipi di dato Character, Date e Number in VARCHAR2.
Sintassi:
TO_CHAR( espressione1,['machera di formato'],[nls_parameter])
Esempi:
SELECT TO_CHAR( SYSDATE, 'HH:MI:SS') FROM DUAL;
restiuisce 05:00:14
mentre
SELECT TO_CHAR( SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL; 
restituisce 2012-09-05 05:01:10

La maschera di formato può essere usata per formattazioni; nel caso di espressione numerica, la posizione del punto decimale, virgola, numero di digit dopo il punto decimale, la valuta (currency simbol), etcNel caso di conversione di una data, la maschera di formato può assumere ad esempio i seguenti valori:
HH ora del giorno (01-12)
HH12 ora del giorno (01-12)
HH24 ora del giorno (00-23)
MI minuti (00-59)
SS secondi (00-59)
YYYY anno (4 e più cifre) 
YYY ultime 3 cifre dell'anno in corso
YY ultime 2 cifre dell'anno in corso
ultima cifra dell'anno in corso
MONTH nome del mese completo in maiuscolo (allungato a 9 caratteri con blank)
month nome del mese completo in caratteri minuscoli (allungato a 9 caratteri con blank)
MON nome del mese abbreviato in maiuscolo (3 caratteri in inglese, in varie lunghezze se localizzato)
MM numero del mese (01-12)
DAY nome del giorno completo in maiuscolo (allungato a 9 caratteri con blank)
DDD giorno dell'anno (001-366)
IDDD giorno dell'anno ISO (001-371; il giorno 1 dell'anno è il lunedi della prima settimana ISO)
DD giorno del mese (01-31)
giorno della settimana, Domenica(1) a Sabato(7)
RM mese in numeri romani (I-XII; I=Gennaio) (maiuscolo)
rm mese in numeri romani (i-xii; i=Gennaio) (minuscolo)
RR è come YY solo che ai valori da 00 a 49 corrisponde 20XX mentre da 50 a 99 corrisponde 19XX.

Esempio:
SELECT TO_DATE('07-GIU-99', 'DD-MON-RR') as A , TO_DATE('07-GIU-49', 'DD-MON-RR') as  B
FROM dual;
A                     B
----------------------------
07-06-1999 07-06-2049
Ad esempio riduciamo lo stipendio degli impiegati del 10%:
select job_title, MIN_SALARY*0.1, TO_CHAR(MIN_SALARY*0.1 ,'$099,999.99') as total
from jobs;
job_title        MIN_SALARY*0.1    total
---------------------------------------------------------------
Purchasing Clerk 250       $000,250.00
Stock Manager        550        $000,550.00
Stock Clerk             200,8     $000,200.80
La maschera $099,999.99 ha il seguente significato.
9il numero di 9 determina la larghezza del numero visualizzato
0visualizza uno 0 davanti al numero
$Floating dollar sign
,restituisce una virgola nella posizione specificata
.
restituisce un punto decimale nella posizione specificata
G
restituisce il separatore di gruppo nella posizione specificata
D
restituisce il carattere decimale nella posizione specificata

Esempio calcolo del primo lunedì del mese successivo ad oggi:
select to_char(next_day(last_day(sysdate),'lunedì') ,'dd "is the first Monday for" fmmonth rrrr')
from dual;
Il paramtero nls_parameter definisce il carattere usato per definire il punto decimale, il carattere di separazione dei gruppi di digits, i caratteri usati per il locale ed internazionale currency symbol. Se il parametro è assente i caratteri suddetti sono determinati dalla sessione corrente. Per visualizzare i parametri della sessione corrente eseguire la query:
select * from NLS_SESSION_PARAMETERS;

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database