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

SQL:subtraindo 1 dia de uma data de carimbo de data/hora


Use o INTERVAL digite para ele. Por exemplo:
--yesterday
SELECT NOW() - INTERVAL '1 DAY';

--Unrelated: PostgreSQL also supports some interesting shortcuts:
SELECT 
    'yesterday'::TIMESTAMP, 
    'tomorrow'::TIMESTAMP, 
    'allballs'::TIME AS aka_midnight;

Você pode fazer o seguinte então:
SELECT 
    org_id,
    count(accounts) AS COUNT,
    ((date_at) - INTERVAL '1 DAY') AS dateat
FROM 
    sourcetable
WHERE 
    date_at <= now() - INTERVAL '130 DAYS'
GROUP BY 
    org_id,
    dateat;

DICAS

Dica 1


Você pode anexar vários operandos. Por exemplo:como obter o último dia do mês atual?
SELECT date_trunc('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 DAY';

Dica 2


Você também pode criar um intervalo usando make_interval função, útil quando você precisa criá-lo em tempo de execução (não usando literais):
SELECT make_interval(days => 10 + 2);
SELECT make_interval(days => 1, hours => 2);
SELECT make_interval(0, 1, 0, 5, 0, 0, 0.0);

Mais informações:


Funções e operadores de data/hora

datatype-datetime (valores especiais) .