DEV Community

Raphael Dias
Raphael Dias

Posted on

Manipulando Datas no Postgres

Fala devs, tudo bem? espero que sim. O ano de 2020 começou daquele jeito, mil projetos, prazos ridiculamente curtos, último ano da Faculdade S2, TCC e por ai vai. Porém desde ano passado venho cultivando a vontade de participar mais, criar conteúdo e fortalecer a comunidade.
Para dar inicio a esse novo desafio (Sim para mim é um grande desafio, estar aqui escrevendo um artigo) andei pensando durante muitos dias sobre um tema. Pois não é que o tema acabou caindo no meu colo na forma de uma baita dor de cabeça?
Todos sabemos que migração de Banco de dados sempre gera um stress e muita dor de cabeça. No meu caso além da migração do banco de Firebird para Postgres, a aplicação sofreria uma atualização para trabalhar com Postgres.
Que dor de cabeça heim? Pois descobrimos que uma das atualizações era a mudança de datastyle de European (DD/MM/AAA) para o padrão ISO (AAAA/MM/DD).

A primeira ideia que surgiu na minha cabeça foi a de mudar o datastyle, porém o mesmo não seria possível :(

A solução era manter o padrão ISO e se utilizar de artimanhas (gambiarra?) para contornar nosso problema.

No Postgres, poderíamos fazer uma inserção semelhante a essa:

insert into test(data) values ('32-01-2020'); --até agora tudo certo, padrão (DD/MM/AAA)

Até ai tudo bem, contudo ao recuperar esse valor do banco teríamos algo assim:

select * from test;

Resultaria em 2020-01-30 convertido para ISO automaticamente.

E para recuperar no formato que (DD/MM/AAAA) poderíamos utilizar a seguinte função nativa do Postgres.

select to_char(data, 'DD/MM/YYYY') from test;

Agora retornando para o formato desejado.

Se esse texto lhe ajudou, se encontrou algum erro ou tem alguma sugestão, gostaria muito de ouvir o que você tem a dizer.

Por hoje é só, até breve.

Top comments (0)