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

Como obter a data de ontem no PostgreSQL

Problema:


Você gostaria de exibir a data de ontem (sem hora) em um banco de dados PostgreSQL.

Solução 1:

SELECT current_date - INTEGER '1' AS yesterday_date;

Supondo que hoje seja 24/09/2020, o resultado é:
ontem_date
23-09-2020

Discussão:


Para obter a data de ontem, você precisa subtrair um dia da data de hoje. Use current_date para obter a data de hoje. Observe que você não precisa de colchetes no final do current_date função. No PostgreSQL, você pode subtrair ou adicionar qualquer número de dias usando o INTEGER palavra-chave. Aqui, como você precisa subtrair um dia, você usa - INTEGER '1' para obter a data de ontem. Observe que o resultado deste cálculo ainda tem o tipo de coluna date .

Solução 2:

SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;

Supondo que hoje seja 24/09/2020, o resultado é:
ontem_date
23-09-2020

Discussão:


Obtenha a data de hoje usando current_date . Você precisa subtrair um intervalo de um dia da data atual. Para fazer isso, use o INTERVAL palavra-chave, que cria qualquer intervalo de data/hora desejado (aqui, '1 day' , que no PostgreSQL é o mesmo que 24 horas). Subtraindo INTERVAL '1 day' a partir da data de hoje resultará em uma coluna formatada como timestamp, então você precisa convertê-la para date . A maneira mais rápida de fazer isso no PostgreSQL é anexando ::date para toda a expressão (lembre-se de colocar a expressão entre parênteses).

Claro, você pode voltar em qualquer intervalo de tempo com a mesma facilidade. Aqui está um exemplo:
SELECT (current_date - INTERVAL '3 months 10 days')::date;

Um INTERVAL também pode ser adicionado a uma data. Então, aqui está uma maneira se você quiser obter a data de amanhã:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;