Como formatar data no postgresql

ola, estou tentando converter datas no postgresql, recentemente tive q alterar o tipo de uma coluna timestamp para tipo text para aceitar as datas dessa forma por exemplo

(10/12/2021, 12/12/2021, 03/05/2021)

ate ai blz, porem preciso fazer uma consulta de um intervalo de tempo usando BETWEEN mas com o campo assim não funciona dai consegui separar os campos por vingula e fazer com que convertessem para data com o seguinte codigo:

select id, to_date(to_char(replace(unnest(string_to_array(data, ', ')),'/','-')::date,'yyyy-MM-dd'),'yyyy-MM-dd') from tb_atendimento 

nas datas q tinham antigas ele ficou normal, mas nas q vem no formato DD/MM/YYYY ta ficando YYYY-DD-MM não consigo deixar no formato YYYY-MM-DD alguma dica ?

Não dá pra fazer um Between em uma lista,
Só entre 2 valores,

são mais de mil valores…

Está errado.
Se a coluna é do tipo Timestamp, você não deve setar o valor como String, seta com um objeto do tipo Timestamp.

Entenda uma coisa:

Datas não têm formato

Uma data é simplesmente um ponto na linha do tempo. Por exemplo, a data 10/12/2021 é somente o ponto do calendário que corresponde ao dia 10 de dezembro do ano 2021.

Essa mesma data pode ser representada de diferentes formas:

  • 10/12/2021 - formato dia/mês/ano, o mais comum no Brasil
  • 12/10/2021 - o irritante formato americano: mês/dia/ano
  • 2021-12-10 - o formato definido pela norma ISO 8601
  • Dez de dezembro de dois mil e vinte e um - em português por extenso
  • Dec 12th, 2021 - outra forma usada nos EUA
  • 2021年12月10日 - em japonês
  • etc…

Todos os formatos acima são diferentes (são textos diferentes), mas todos representam a mesma data (o mesmo ponto do calendário). Mas a data em si não está em nenhum desses formatos.

Então quando você salva uma data no banco, internamente ela só tem os valores numéricos. Claro que na query você precisa passar em algum formato, e quando você faz o SELECT ela é mostrada em algum outro formato, mas isso não quer dizer que ela está naquele formato.

Sendo assim, não há motivo para mudar o tipo de timestamp para text, se o que tem ali são datas. Não deu pra entender exatamente qual o problema, se é receber datas num formato ou somente formatar a saída (se for o primeiro, converta os textos para datas, se for o segundo, converta as datas para o formato desejado).

2 curtidas