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