1º Exemplo: exibir a data no formato dd/mm/aaaa (dia/mês/ano):
Solução: vamos utilizar a função to_char para formatar a data.
Na imagem abaixo, vemos a tabela "tb_fornecedor", vamos formatar a data da coluna "data".
Para formatar a data executamos a sentença abaixo:
SELECT
produto,
quantidade,
valor,
segmento,
/*Na função to_char utilize primeiro o nome da coluna depois o formato*/
to_char(data, 'DD/MM/YYYY')
FROM tb_fornecedor;
Após executarmos a sentença, a data foi convertida. Podemos visualizar o resultado na imagem abaixo.
Podemos perceber que a coluna que foi convertida passou a se chamar to_char, nome da função que usamos, caso seja necessário manter o mesmo nome da coluna ou escolher um outro nome podemos colocar "AS nome_da_coluna" após a função 'to_char'. Quando fazemos isso estamos criando um alias para a coluna (apelido).
SELECT
produto,
quantidade,
valor,
segmento,
to_char(data, 'DD/MM/YYY') AS data
FROM tb_fornecedor;
Após executarmos a sentença, a coluna 'data' continua se chamando 'data'. Podemos visualizar o resultado na imagem abaixo.
2º Exemplo: exibir a data por extenso. Ao invés de exibir a data como '2013-09-12' queremos exibir como 'Quinta-feira, 12 de setembro de 2013'.
Antes de exibir a data no formato proposto, vamos verificar como a função to_char pode ser utilizada.
SELECT
data,
/*seleciona o dia*/
to_char(data, 'DD') AS dia,
/*seleciona o dia da semana*/
to_char(data, 'Day') AS dia_sem,
/*seleciona o mes em minusculo*/
to_char(data, 'month') AS mes_minusc,
/*seleciona o mes em maiusculo*/
to_char(data, 'MONTH') AS mes_maiusc,
/*seleciona o mes com a primeira letra em maiusculo*/
to_char(data, 'Month') AS pri_maiusc,
/*seleciona o ano com 4 digitos*/
to_char(data, 'YYYY') AS ano,
/*seleciona o ano com 2 digitos*/
to_char(data, 'YY') AS ano
FROM tb_fornecedor;
Após a execução da sentença acima, podemos visualizar algumas funcionalidades de to_char.
Mas os dados apareceram em inglês. E agora?
Para que as coluna sejam exibidas em português, ou em outro idioma, devemos utilizar o prefixo TM(Translation Mode - Modo de Tradução). O TM converterá o dia e o mês para o padrão local armazenado no lc_time.
O lc_time que indica como serão exibidas as informações de data e hora.
Para verificar o lc_time do banco executamos a seguinte sentença:
SHOW lc_time;
Veja o retorno da sentença na imagem abaixo:
Agora que já sabemos o que é TM, vamos utilizá-lo para que os campos da tabela sejam exibidos em português:
SELECT
data,
/*Seleciona o dia*/
to_char(data, 'DD') AS dia,
/*Seleciona o dia da semana. Idioma em português devido ao prefixo TM*/
to_char(data, 'TMDay') AS dia_sem,
/*Seleciona o mês em minusculo. Idioma em português devido ao prefixo TM*/
to_char(data, 'TMmonth') AS mes_minusc,
/*Seleciona o mês em maiúsculo. Idioma em português devido ao prefixo TM*/
to_char(data, 'TMMONTH') AS mes_maiusc,
/*Seleciona o mês com a primeira letra em maiúsculo. Idioma em português devido ao prefixo TM*/
to_char(data, 'TMMonth') AS pri_maiusc,
/*Seleciona o ano com 4 digitos*/
to_char(data, 'YYYY') AS ano,
/*Seleciona o ano com 2 digitos*/
to_char(data, 'YY') AS ano
FROM tb_fornecedor;
Após a execução da sentença acima, as colunas serão exibidas em português. Podemos visualizar o resultado da sentença na imagem abaixo.
Agora os dados já aparecem em português, só falta exibirmos no formato que foi proposto no inicio do exemplo. Se você não se lembra mais, vamos relembrar: a data '2013-09-12' deverá ser exibida como 'Quinta-feira, 12 de setembro de 2013'.
SELECT
produto,
quantidade,
valor,
segmento,
/*Perceba que a preposição "de" está entre aspas duplas para que a função to_char não a converta*/
to_char(data, 'TMDay, DD "de" TMMonth YYYY') AS data
FROM tb_fornecedor;
Após executarmos a sentença a data será exibida no formato esperado. Veja o resultado na imagem abaixo:
Olá. Gostei muito do artigo, mas ao testar aqui no meu banco não funcionou. Atualmente uso o PostgreSQL 8.3. Existe uma versão mínima pra funcionar?
ResponderExcluirObrigado.
Testei nas versões 10 e 12... acredito que tenha.
ExcluirAjudou muito, muito bom artigo.
ResponderExcluirOlá o teu post ajudou me bastante.
ResponderExcluirFico feliz em ter ajudado e grata pelo comentário.
ExcluirOtimo post, grato por compartilhar.
ResponderExcluirParabéns pelo post! me ajudou muito obrigado!
ResponderExcluirParabens. me ajudou muito
ResponderExcluirMuito bom...
ResponderExcluirDeu aula ! Que show funcionou redondo aqui!
ResponderExcluirFico feliz por ter contribuído.
ExcluirObrigada pela mensagem.
Kelly. Como dizem aqui na empresa quando não entendem uma explicação: "Quer que eu desenhe".
ResponderExcluirVocê fez isto, desenhou! Muito didático.
Otimo!
ResponderExcluirobrigado!!
o meu não deu certo assim com essa função "data":
ResponderExcluirto_char(data, 'TMDay') AS dia_sem
mas deu certo assim com a função "current_date":
select to_char(current_date, 'TMDay') AS dia_sem
mas de qqr forma foi muito útil todas as dicas. Obrigada!!
Excluirdata é o seu campo data hahaha
ExcluirBoas dicas! Testei aqui e funcionou.
ResponderExcluir