TO_CHAR
TO_CHAR Converte uma expressão de timestamp ou numérica para o formato de dados de string de caracteres.
Sintaxe
TO_CHAR (timestamp_expression | numeric_expression , 'format')
Argumentos
- timestamp_expression
-
Uma expressão que resulta em um valor do tipo TIMESTAMP ou TIMESTAMPTZ ou um valor que pode ser implicitamente forçado para um timestamp.
- numeric_expression
-
Uma expressão que resulta em um valor de tipo de dados numérico ou em um valor que pode implicitamente ser convertido para tipo numérico. Para obter mais informações, consulte Tipos numéricos. TO_CHAR insere um espaço à esquerda da string numérica.
nota
TO_CHAR não é compatível com valores do tipo DECIMAL de 128 bits.
- format
-
O formato para o novo valor. Para obter os formatos válidos, consulte Strings de formato datetime e Strings de formato numérico.
Tipo de retorno
VARCHAR
Exemplos
O exemplo a seguir converte um carimbo de data/hora em um valor com a data e a hora em um formato com o nome do mês preenchido com nove caracteres, o nome do dia da semana e o número do dia do mês.
select to_char(timestamp '2009-12-31 23:15:59', 'MONTH-DY-DD-YYYY HH12:MIPM');
to_char ------------------------- DECEMBER -THU-31-2009 11:15PM
O exemplo a seguir converte um carimbo de data/hora em um valor com o número do dia do ano.
select to_char(timestamp '2009-12-31 23:15:59', 'DDD');
to_char ------------------------- 365
O exemplo a seguir converte um carimbo de data/hora em um número do dia da semana da norma ISO.
select to_char(timestamp '2022-05-16 23:15:59', 'ID');
to_char ------------------------- 1
O exemplo a seguir extrai o nome do mês de uma data.
select to_char(date '2009-12-31', 'MONTH');
to_char ------------------------- DECEMBER
O seguinte exemplo converte cada valor de STARTTIME na tabela EVENT em uma string que consiste em horas, minutos e segundos.
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
O exemplo a seguir converte um valor de timestamp inteiro em um formato diferente.
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
O exemplo a seguir converte um literal de timestamp em uma string de caracteres.
select to_char(timestamp '2009-12-31 23:15:59','HH24:MI:SS');
to_char ---------- 23:15:59
O exemplo a seguir converte um número decimal em uma string de caracteres.
select to_char(125.8, '999.99');
to_char --------- 125.80
O exemplo a seguir converte um número decimal em uma string de caracteres.
select to_char(125.8, '999D99');
to_char --------- 125.80
O exemplo a seguir converte um número em uma string de caracteres com um zero inicial.
select to_char(125.8, '0999D99');
to_char --------- 0125.80
O exemplo a seguir converte um número em uma string de caracteres com o sinal menos no final.
select to_char(-125.8, '999D99S');
to_char --------- 125.80-
O exemplo a seguir converte um número em uma string de caracteres com o sinal positivo ou negativo na posição especificada.
select to_char(125.8, '999D99SG');
to_char --------- 125.80+
O exemplo a seguir converte um número em uma string de caracteres com o sinal positivo na posição especificada.
select to_char(125.8, 'PL999D99');
to_char --------- + 125.80
O exemplo a seguir converte um número em uma string de caracteres com o símbolo de moeda.
select to_char(-125.88, '$S999D99');
to_char --------- $-125.88
O exemplo a seguir converte um número em uma string de caracteres com o símbolo de moeda na posição especificada.
select to_char(-125.88, 'S999D99L');
to_char --------- -125.88$
O exemplo a seguir converte um número em uma string de caracteres usando um separador de milhar (vírgula).
select to_char(1125.8, '9,999.99');
to_char --------- 1,125.80
O exemplo a seguir converte um número em uma string de caracteres usando colchetes angulares para números negativos.
select to_char(-125.88, '$999D99PR');
to_char --------- $<125.88>
O exemplo a seguir converte um número em uma string de numerais romanos.
select to_char(125, 'RN');
to_char --------- CXXV
O exemplo a seguir converte uma data em um código de século.
select to_char(date '2020-12-31', 'CC');
to_char --------- 21
O exemplo a seguir exibe o dia da semana.
SELECT to_char(current_timestamp, 'FMDay, FMDD HH12:MI:SS');
to_char ----------------------- Wednesday, 31 09:34:26
O exemplo a seguir exibe o sufixo de número ordinal de um número.
SELECT to_char(482, '999th');
to_char ----------------------- 482nd
O exemplo a seguir subtrai a comissão do preço pago na tabela de vendas. A diferença é, então, arredondada para cima e convertida em um numeral romano, exibido na coluna 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
O seguinte exemplo adiciona o cifrão aos valores da diferença exibidos na coluna 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
O seguinte exemplo lista o século em que cada venda foi efetuada.
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
O seguinte exemplo converte cada valor de STARTTIME na tabela EVENT em uma string que consiste em horas, minutos, segundos e fuso horário:
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
O seguinte exemplo exibe a formatação para segundos, milissegundos e microssegundos.
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