Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
TO_CHAR converte un timestamp o un'espressione numerica in un formato di dati carattere-stringa.
Sintassi
TO_CHAR (timestamp_expression | numeric_expression , 'format')
Argomenti
- timestamp_expression
-
Un'espressione che restituisce un valore di tipo TIMESTAMP o TIMESTAMPTZ o un valore che può essere implicitamente costretto in un timestamp.
- numeric_expression
-
Un'espressione che restituisce un valore di tipo di dati numerici un valore che può essere implicitamente costretto in un tipo numerico. Per ulteriori informazioni, consultare Tipi numerici. TO_CHAR inserisce uno spazio a sinistra della stringa numerica.
Nota
TO_CHAR non supporta i valori DECIMAL a 128 bit.
- format
-
Il formato per il nuovo valore. Per i formati validi, consultare Stringhe di formato datetime e Stringhe di formato numerico.
Tipo restituito
VARCHAR
Esempi
Nell'esempio seguente un timestamp viene convertito in un valore con la data e l'ora in un formato con il nome del mese a nove caratteri, il nome del giorno della settimana e il numero del giorno del mese.
select to_char(timestamp '2009-12-31 23:15:59', 'MONTH-DY-DD-YYYY HH12:MIPM');
to_char
-------------------------
DECEMBER -THU-31-2009 11:15PM
Nell'esempio seguente un timestamp viene convertito in un valore con il numero di giorno dell'anno.
select to_char(timestamp '2009-12-31 23:15:59', 'DDD');
to_char
-------------------------
365
Nell'esempio seguente un timestamp viene convertito in un numero di giorno ISO della settimana.
select to_char(timestamp '2022-05-16 23:15:59', 'ID');
to_char
-------------------------
1
L'esempio seguente estrae il nome del mese da un valore di data.
select to_char(date '2009-12-31', 'MONTH');
to_char
-------------------------
DECEMBER
Nell'esempio seguente viene convertito ogni valore STARTTIME nella tabella EVENT in una stringa composta da ore, minuti e secondi.
select to_char(starttime, 'HH12:MI:SS')
from event where eventid between 1 and 5
order by eventid;
to_char
----------
02:30:00
08:00:00
02:30:00
02:30:00
07:00:00
L'esempio seguente converte un intero valore timestamp in un formato diverso.
select starttime, to_char(starttime, 'MON-DD-YYYY HH12:MIPM')
from event where eventid=1;
starttime | to_char
---------------------+---------------------
2008-01-25 14:30:00 | JAN-25-2008 02:30PM
L'esempio seguente converte un letterale di timestamp in una stringa di caratteri.
select to_char(timestamp '2009-12-31 23:15:59','HH24:MI:SS');
to_char
----------
23:15:59
L'esempio seguente converte un numero decimale in una stringa di caratteri.
select to_char(125.8, '999.99');
to_char
---------
125.80
L'esempio seguente converte un numero decimale in una stringa di caratteri.
select to_char(125.8, '999D99');
to_char
---------
125.80
L'esempio seguente converte un numero in una stringa di caratteri con uno zero iniziale.
select to_char(125.8, '0999D99');
to_char
---------
0125.80
L'esempio seguente converte un numero in una stringa di caratteri con il segno negativo alla fine.
select to_char(-125.8, '999D99S');
to_char
---------
125.80-
L'esempio seguente converte un numero in una stringa di caratteri con il segno positivo o negativo nella posizione specificata.
select to_char(125.8, '999D99SG');
to_char
---------
125.80+
L'esempio seguente converte un numero in una stringa di caratteri con il segno positivo nella posizione specificata.
select to_char(125.8, 'PL999D99');
to_char
---------
+ 125.80
L'esempio seguente converte un numero in una stringa di caratteri con il simbolo di valuta.
select to_char(-125.88, '$S999D99');
to_char
---------
$-125.88
L'esempio seguente converte un numero in una stringa di caratteri con il simbolo di valuta nella posizione specificata.
select to_char(-125.88, 'S999D99L');
to_char
---------
-125.88$
L'esempio seguente converte un numero in una stringa di caratteri utilizzando un separatore di migliaia (virgole).
select to_char(1125.8, '9,999.99');
to_char
---------
1,125.80
L'esempio seguente converte un numero in una stringa di caratteri con parentesi angolari per i numeri negativi.
select to_char(-125.88, '$999D99PR');
to_char
---------
$<125.88>
L'esempio seguente converte un numero in una stringa di numeri romani.
select to_char(125, 'RN');
to_char
---------
CXXV
L'esempio seguente converte una data in un codice centenario.
select to_char(date '2020-12-31', 'CC');
to_char
---------
21
L'esempio seguente mostra il giorno della settimana.
SELECT to_char(current_timestamp, 'FMDay, FMDD HH12:MI:SS');
to_char
-----------------------
Wednesday, 31 09:34:26
L'esempio seguente visualizza il suffisso numerico ordinale per un numero.
SELECT to_char(482, '999th');
to_char
-----------------------
482nd
L'esempio seguente sottrae la commissione dal prezzo pagato nella tabella delle vendite. La differenza viene quindi arrotondata e convertita in un numero romano, mostrato nella colonna to_char:
select salesid, pricepaid, commission, (pricepaid - commission)
as difference, to_char(pricepaid - commission, 'rn') from sales
group by sales.pricepaid, sales.commission, salesid
order by salesid limit 10;
salesid | pricepaid | commission | difference | to_char
---------+-----------+------------+------------+-----------------
1 | 728.00 | 109.20 | 618.80 | dcxix
2 | 76.00 | 11.40 | 64.60 | lxv
3 | 350.00 | 52.50 | 297.50 | ccxcviii
4 | 175.00 | 26.25 | 148.75 | cxlix
5 | 154.00 | 23.10 | 130.90 | cxxxi
6 | 394.00 | 59.10 | 334.90 | cccxxxv
7 | 788.00 | 118.20 | 669.80 | dclxx
8 | 197.00 | 29.55 | 167.45 | clxvii
9 | 591.00 | 88.65 | 502.35 | dii
10 | 65.00 | 9.75 | 55.25 | lv
L'esempio seguente aggiunge il simbolo di valuta ai valori di differenza mostrati nella colonna to_char:
select salesid, pricepaid, commission, (pricepaid - commission)
as difference, to_char(pricepaid - commission, 'l99999D99') from sales
group by sales.pricepaid, sales.commission, salesid
order by salesid limit 10;
salesid | pricepaid | commission | difference | to_char
--------+-----------+------------+------------+------------
1 | 728.00 | 109.20 | 618.80 | $ 618.80
2 | 76.00 | 11.40 | 64.60 | $ 64.60
3 | 350.00 | 52.50 | 297.50 | $ 297.50
4 | 175.00 | 26.25 | 148.75 | $ 148.75
5 | 154.00 | 23.10 | 130.90 | $ 130.90
6 | 394.00 | 59.10 | 334.90 | $ 334.90
7 | 788.00 | 118.20 | 669.80 | $ 669.80
8 | 197.00 | 29.55 | 167.45 | $ 167.45
9 | 591.00 | 88.65 | 502.35 | $ 502.35
10 | 65.00 | 9.75 | 55.25 | $ 55.25
L'esempio seguente elenca il secolo in cui è stata effettuata ciascuna vendita.
select salesid, saletime, to_char(saletime, 'cc') from sales
order by salesid limit 10;
salesid | saletime | to_char
---------+---------------------+---------
1 | 2008-02-18 02:36:48 | 21
2 | 2008-06-06 05:00:16 | 21
3 | 2008-06-06 08:26:17 | 21
4 | 2008-06-09 08:38:52 | 21
5 | 2008-08-31 09:17:02 | 21
6 | 2008-07-16 11:59:24 | 21
7 | 2008-06-26 12:56:06 | 21
8 | 2008-07-10 02:12:36 | 21
9 | 2008-07-22 02:23:17 | 21
10 | 2008-08-06 02:51:55 | 21
Nell'esempio seguente viene convertito ogni valore STARTTIME nella tabella EVENT in una stringa composta da ore, minuti, secondi e fuso orario.
select to_char(starttime, 'HH12:MI:SS TZ')
from event where eventid between 1 and 5
order by eventid;
to_char
----------
02:30:00 UTC
08:00:00 UTC
02:30:00 UTC
02:30:00 UTC
07:00:00 UTC
L'esempio seguente mostra la formattazione per secondi, millisecondi e microsecondi.
select sysdate,
to_char(sysdate, 'HH24:MI:SS') as seconds,
to_char(sysdate, 'HH24:MI:SS.MS') as milliseconds,
to_char(sysdate, 'HH24:MI:SS:US') as microseconds;
timestamp | seconds | milliseconds | microseconds
--------------------+----------+--------------+----------------
2015-04-10 18:45:09 | 18:45:09 | 18:45:09.325 | 18:45:09:325143