TO_CHAR
TO_CHAR convierte una marca temporal o una expresión numérica a un formato de datos de cadena de caracteres.
Sintaxis
TO_CHAR (timestamp_expression | numeric_expression , 'format')
Argumentos
- timestamp_expression
-
Una expresión que da lugar a un valor de tipo TIMESTAMP o TIMESTAMPTZ, o bien, un valor que se pueda convertir de forma implícita en una marca temporal.
- numeric_expression
-
Una expresión que de como resultado un valor de tipo de datos numérico o un valor que se pueda convertir implícitamente en un tipo numérico. Para obtener más información, consulte Tipos numéricos. TO_CHAR inserta un espacio a la izquierda de la cadena numérica.
nota
TO_CHAR no admite valores DECIMAL de 128 bits.
- formato
-
El formato para el valor nuevo. Para conocer los formatos válidos, consulte Cadenas de formatos de fecha y hora y Cadenas de formatos numéricos.
Tipo de retorno
VARCHAR
Ejemplos
En el ejemplo siguiente, se convierte una marca temporal en un valor con la fecha y la hora en un formato con el nombre del mes relleno con nueve caracteres, el nombre del día de la semana y el número de día del mes.
select to_char(timestamp '2009-12-31 23:15:59', 'MONTH-DY-DD-YYYY HH12:MIPM');
to_char ------------------------- DECEMBER -THU-31-2009 11:15PM
En el siguiente ejemplo, se convierte una marca temporal en un valor con el número de día del año.
select to_char(timestamp '2009-12-31 23:15:59', 'DDD');
to_char ------------------------- 365
En el siguiente ejemplo, se convierte una marca temporal en un número de día de ISO de la semana.
select to_char(timestamp '2022-05-16 23:15:59', 'ID');
to_char ------------------------- 1
El siguiente ejemplo extrae el nombre del mes de una fecha.
select to_char(date '2009-12-31', 'MONTH');
to_char ------------------------- DECEMBER
En el siguiente ejemplo, se convierte cada valor STARTTIME en la tabla EVENT a una cadena que consta de horas, minutos y 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
En el siguiente ejemplo, se convierte un valor completo de marca temporal a un 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
En el siguiente ejemplo, se convierte un literal de marca temporal a una cadena de caracteres.
select to_char(timestamp '2009-12-31 23:15:59','HH24:MI:SS');
to_char ---------- 23:15:59
En el siguiente ejemplo, se convierte un número decimal en una cadena de caracteres.
select to_char(125.8, '999.99');
to_char --------- 125.80
En el siguiente ejemplo, se convierte un número decimal en una cadena de caracteres.
select to_char(125.8, '999D99');
to_char --------- 125.80
En el siguiente ejemplo, se convierte un número en una cadena de caracteres con un cero a la izquierda.
select to_char(125.8, '0999D99');
to_char --------- 0125.80
En el siguiente ejemplo se convierte un número a una cadena de caracteres con el signo negativo al final.
select to_char(-125.8, '999D99S');
to_char --------- 125.80-
En el siguiente ejemplo se convierte un número a una cadena de caracteres con el signo positivo o negativo en la posición especificada.
select to_char(125.8, '999D99SG');
to_char --------- 125.80+
En el siguiente ejemplo se convierte un número a una cadena de caracteres con el signo positivo en la posición especificada.
select to_char(125.8, 'PL999D99');
to_char --------- + 125.80
En el siguiente ejemplo se convierte un número a una cadena de caracteres con el símbolo de moneda.
select to_char(-125.88, '$S999D99');
to_char --------- $-125.88
En el siguiente ejemplo se convierte un número a una cadena de caracteres con el símbolo de moneda en la posición especificada.
select to_char(-125.88, 'S999D99L');
to_char --------- -125.88$
En el siguiente ejemplo, se convierte un número a una cadena de caracteres utilizando un separador de millar (coma).
select to_char(1125.8, '9,999.99');
to_char --------- 1,125.80
En el siguiente ejemplo, se convierte un número a una cadena de caracteres con corchetes angulares para números negativos.
select to_char(-125.88, '$999D99PR');
to_char --------- $<125.88>
En el siguiente ejemplo se convierte un número a una cadena de números romanos.
select to_char(125, 'RN');
to_char --------- CXXV
En el siguiente ejemplo, se convierte una fecha a un código de siglo.
select to_char(date '2020-12-31', 'CC');
to_char --------- 21
En el ejemplo siguiente se muestra el día de la semana.
SELECT to_char(current_timestamp, 'FMDay, FMDD HH12:MI:SS');
to_char ----------------------- Wednesday, 31 09:34:26
En el ejemplo siguiente se muestra el sufijo de número ordinal de un número.
SELECT to_char(482, '999th');
to_char ----------------------- 482nd
En el siguiente ejemplo, se resta la comisión del precio pagado en la tabla de ventas. La diferencia, luego, se redondea hacia arriba y se convierte en un número romano, que se muestra en la columna 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
En el siguiente ejemplo, se agrega el símbolo de la moneda a los valores de diferencia que se muestran en la columna 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
En el siguiente ejemplo, se indica el siglo en el que se realizó la venta.
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
En el siguiente ejemplo, se convierte cada valor STARTTIME en la tabla EVENT en una cadena que consta de horas, minutos, segundos y zona horaria.
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
En el siguiente ejemplo, se muestra el formato para segundos, milisegundos y microsegundos.
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