En Postgres, to_char()
es una función de formato de tipo de datos que convierte su primer argumento en una cadena.
El formato de la cadena está determinado por el segundo argumento.
El to_char()
La función se puede utilizar para realizar las siguientes conversiones:
- marca de tiempo en cadena
- intervalo a cadena
- de entero a cadena
- precisión real/doble a cadena
- numérico a cadena
Sintaxis
La sintaxis es así:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Donde el primer argumento es el valor a convertir (en cualquiera de los tipos de datos enumerados) y text
es una cadena de formato con la que dar formato al primer argumento.
Ejemplo
Este es un ejemplo de formato de un valor de fecha:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Resultado:
Friday , 25 December 2020
En este caso, la cadena de formato Day, DD Month YYYY
determina cómo se formatea la fecha cuando se devuelve como una cadena por to_char()
.
Patrones de plantilla
La cadena de formato consta de uno o más patrones de plantilla .
En el ejemplo anterior, mi cadena de formato era Day, DD Month YYYY
. Por lo tanto, constaba de los siguientes patrones de plantilla:
Day
DD
Month
YYYY
Podría haber usado más o menos patrones de plantilla y el resultado habría sido diferente.
Por ejemplo, podría haber hecho lo siguiente:
SELECT to_char(date '2020-12-25', 'Day');
Resultado:
Friday
Alternativamente, mi cadena de formato podría haber consistido en una serie diferente de patrones de plantilla en conjunto.
Por ejemplo:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Resultado:
Fri, 25 Dec 20
Modificadores de patrón de plantilla
También puede agregar modificadores de patrón de plantilla a su cadena de formato.
El resultado será ligeramente diferente según el modificador utilizado.
Por ejemplo, el siguiente ejemplo presenta el día del mes como un número ordinal.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Resultado:
Friday , 25 December 2020
Esto es lo mismo que el primer ejemplo, pero la diferencia es que agregué el th
modificador de plantilla como sufijo del DD
patrón de plantilla. Esto agrega el sufijo del número ordinal al día del mes.
Por lo tanto, terminamos con 25th en lugar de solo 25 .
Para enfatizar el efecto del modificador de plantilla, así es como se ve cuando se aplica a diferentes valores.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Resultado:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
Podría agregar otro modificador para suprimir los ceros iniciales si es necesario.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Resultado:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
En este caso agregué FM
que es para el "modo de llenado". Este modificador suprime los ceros iniciales y los espacios en blanco de relleno.
Numérico
El ejemplo anterior también se puede aplicar a valores numéricos.
Sin embargo, cuando use valores numéricos, deberá intercambiar D
con 9
o 0
.
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
Resultado:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Lista de patrones y modificadores de plantilla
Los patrones de plantilla reales que puede usar dependen de si está formateando un valor de fecha/hora o un número.
Para obtener una lista completa de los patrones de plantilla disponibles, consulte:
- Patrones de plantilla y modificadores para formato de fecha/hora
- Patrones de plantilla y modificadores para formato numérico