PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como to_char() funciona no PostgreSQL


No Postgres, to_char() é uma função de formatação de tipo de dados que converte seu primeiro argumento em uma string.

O formato da string é determinado pelo segundo argumento.

O to_char() A função pode ser usada para fazer as seguintes conversões:
  • timestamp para string
  • intervalo para string
  • inteiro para string
  • precisão real/dupla para string
  • numérico para string

Sintaxe


A sintaxe fica assim:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)

Onde o primeiro argumento é o valor a ser convertido (em qualquer um dos tipos de dados listados) e text é uma string de formato com a qual formata o primeiro argumento.

Exemplo


Aqui está um exemplo de formatação de um valor de data:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');

Resultado:
Friday , 25 December 2020

Nesse caso, a string de formato Day, DD Month YYYY determina como a data é formatada quando é retornada como uma string por to_char() .

Padrões de modelo


A string de formato consiste em um ou mais padrões de modelo .

No exemplo anterior, minha string de formato era Day, DD Month YYYY . Portanto, consistia nos seguintes padrões de modelo:
  • Day
  • DD
  • Month
  • YYYY

Eu poderia ter usado mais ou menos padrões de modelo, e a saída teria sido diferente.

Por exemplo, eu poderia ter feito o seguinte:
SELECT to_char(date '2020-12-25', 'Day');

Resultado:
Friday

Alternativamente, minha string de formato poderia consistir em uma série diferente de padrões de modelo.

Por exemplo:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');

Resultado:
Fri, 25 Dec 20

Modificadores de padrão de modelo


Você também pode adicionar modificadores de padrão de modelo à sua string de formato.

O resultado será ligeiramente diferente dependendo do modificador usado.

Por exemplo, o exemplo a seguir apresenta o dia do mês como um número ordinal.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');

Resultado:
Friday , 25 December 2020

Este é o mesmo que o primeiro exemplo, mas a diferença é que eu adicionei o th modificador de modelo como um sufixo para o DD padrão de modelo. Isso acrescenta o sufixo do número ordinal ao dia do mês.

Portanto, terminamos com o 25º em vez de apenas 25 .

Para enfatizar o efeito do modificador de modelo, veja como ele fica quando aplicado a valores diferentes.
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

Eu poderia adicionar outro modificador para suprimir os zeros à esquerda, se necessário.
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

Neste caso eu adicionei FM que é para o "modo de preenchimento". Este modificador suprime zeros à esquerda e espaços em branco de preenchimento.

Numérico


O exemplo anterior também pode ser aplicado a valores numéricos.

No entanto, ao usar valores numéricos, você precisará trocar D com 9 ou 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 padrões e modificadores de modelo


Os padrões de modelo reais que você pode usar dependem se você está formatando um valor de data/hora ou um número.

Para obter uma lista completa de padrões de modelo disponíveis, consulte:
  • Padrões e modificadores de modelo para formatação de data/hora
  • Padrões e modificadores de modelo para formatação numérica