Función TO_CHAR en PostgreSQL

La función TO_CHAR en PostgreSQL es una herramienta fundamental para convertir valores como fechas, horas o números en cadenas de texto con un formato personalizado. Esta función, parte del grupo de funciones de cadena en PostgreSQL, permite definir patrones específicos para adaptar los datos según las necesidades de visualización, lo que la hace indispensable en reportes, aplicaciones o cualquier consulta que requiera una presentación clara y legible.

Con la función TO_CHAR en PostgreSQL, puedes formatear fechas para mostrar días y meses en texto, incluir separadores de miles en números o ajustar la precisión de los decimales. Su flexibilidad la convierte en una opción poderosa para dar forma a los datos de manera que se adapten a los requisitos específicos de cada proyecto.

En este artículo, primero exploraremos la sintaxis básica de TO_CHAR y luego veremos ejemplos prácticos que te permitirán dominar su uso. Analizaremos sus principales parámetros para que puedas aprovechar todo su potencial en tus consultas y generar formatos personalizados de manera eficiente.

Para más información, puedes consultar la documentación oficial de la función TO_CHAR en PostgreSQL.

Sintaxis

La sintaxis para utilizar la función TO_CHAR en PostgreSQL es la siguiente:

TO_CHAR(expresion, formato)
  • expresión: la expresión puede ser una marca de tiempo, un intervalo, un número entero, un valor de doble precisión o un valor numérico que se convierte en cadena según un formato específico.
  • formato: qué formato se debe devolver la cadena.

Lista de formatos

La tabla siguiente muestra las cadenas de formato numérico válidas:

FormatoDescripción
9Valor numérico con el número de dígitos especificado
0Valor numérico con ceros a la izquierda
. (period)punto decimal
Dpunto decimal que utiliza la configuración regional
, (comma)grupo (miles) separador
FMModo de relleno, que suprime los espacios en blanco de relleno y los ceros a la izquierda.
PRValor negativo entre paréntesis angulares.
SSigno anclado a un número que utiliza la configuración regional
LSímbolo de moneda que utiliza la configuración regional
GSeparador de grupos que utiliza la configuración regional
MISigno menos en la posición especificada para números menores que 0.
PLSigno más en la posición especificada para números mayores que 0.
SGSigno más / menos en la posición especificada
RNNúmero romano que va del 1 al 3999
TH or thSufijo del número ordinal en mayúsculas o minúsculas

La siguiente tabla muestra las cadenas de formato de fecha y hora válidas:

PatternDescription
Y,YYYaño en 4 dígitos con coma
YYYYaño en 4 dígitos
YYY3 últimos dígitos del año
YY2 últimos dígitos del año
YEl último dígito del año
IYYYAño de numeración de semanas ISO 8601 (4 o más dígitos)
IYY3 últimos dígitos del año de numeración de la semana ISO 8601
IY2 últimos dígitos del año de numeración de la semana ISO 8601
IÚltimo dígito del año de numeración de la semana ISO 8601
BC, bc, AD or adIndicador de era sin puntos
B.C., b.c., A.D. ora.d.Indicador de época con puntos
MONTHNombre del mes en inglés en mayúsculas
MonthNombre del mes en inglés con mayúsculas
monthNombre completo del mes en inglés en minúsculas
MONNombre abreviado del mes en mayúsculas, por ejemplo, ENE, FEB, etc.
MonNombre del mes abreviado en mayúsculas, por ejemplo, enero, febrero, etc.
monNombre abreviado del mes en minúsculas, por ejemplo, ene, feb, etc.
MMNúmero de mes de 01 a 12
DAYNombre del día completo en mayúsculas
DayNombre del día completo con la primera letra en mayúsculas
dayNombre del día completo en minúsculas
DYNombre abreviado del día en mayúsculas
DyNombre abreviado del día con la primera letra en mayúsculas
dyNombre abreviado del día en minúsculas
DDDDía del año (001-366)
IDDDDía del año de numeración ISO 8601 (001-371; el día 1 del año es el lunes de la primera semana ISO)
DDDía del mes (01-31)
DDía de la semana, de domingo (1) a sábado (7)
IDISO 8601 día de la semana, de lunes (1) a domingo (7)
WSemana del mes (1-5) (la primera semana comienza el primer día del mes)
WWNúmero de semana del año (1-53) (la primera semana comienza el primer día del año)
IWNúmero de semana del año de numeración de semanas ISO 8601 (01-53; el primer jueves del año corresponde a la semana 1)
CCSiglo: 21, 22, etc.
JDía juliano (días enteros desde el 24 de noviembre de 4714 a.C. a medianoche UTC)
RMMes en números romanos en mayúsculas (I-XII)
rmMes en números romanos minúsculas (i-xii)
HHHora del día (0-12)
HH12Hora del día (0-12)
HH24Hora del día (0-23)
MIMinuto (0-59)
SSSegundo (0-59)
MSMilisegundo (000-999)
USMicrosegundo (000000-999999)
SSSSSegundos después de medianoche (0-86399)
AM, am, PM or pmIndicador Meridiem (sin puntos)
A.M., a.m., P.M. or p.m.Indicador Meridiem (con puntos)

Ejemplos

Convertir una fecha a cadena

En el siguiente ejemplo, convertimos el campo fecha_alta, que es de tipo DATE con formato yyyy-mm-dd, a una cadena de texto con el formato dd/mm/yy:

select fecha_alta, to_char(fecha_alta,'dd/mm/yy') 
from empleados;
Función TO_CHAR en PostgreSQL

Convertir una fecha y hora con zona horaria a cadena

En el siguiente ejemplo, añadimos un día a una fecha y hora con zona horaria utilizando la función TO_CHAR en PostgreSQL junto a DATE_ADD. Posteriormente, convertimos el resultado en una cadena con el formato dd/mm/yyyy para una presentación más legible:

select to_char(date_add('1986-09-26', '1 day'::interval), 'dd/mm/yyyy');

Escribir un comentario