sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo funciona to_char() en PostgreSQL

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