sql >> Databáze >  >> RDS >> PostgreSQL

SQL:Odečtení 1 dne od data časového razítka

Použijte INTERVAL zadejte do něj. Např.:

--yesterday
SELECT NOW() - INTERVAL '1 DAY';

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

Poté můžete provést následující:

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;

TIPY

Tip 1

Můžete připojit více operandů. Např.:jak získat poslední den aktuálního měsíce?

SELECT date_trunc('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 DAY';

Tip 2

Interval můžete vytvořit také pomocí make_interval funkce, užitečná, když ji potřebujete vytvořit za běhu (ne pomocí literálů):

SELECT make_interval(days => 10 + 2);
SELECT make_interval(days => 1, hours => 2);
SELECT make_interval(0, 1, 0, 5, 0, 0, 0.0);

Další informace:

Funkce data a času a operátoři

datatype-datetime (zvláštní hodnoty) .



  1. Jak zkontrolovat, zda není řetězec null a není prázdný na serveru SQL?

  2. ukládání objektu python v tabulce postgres s okurkou

  3. Jak zkombinuji dva příkazy UPDATE v jednom dotazu MySQL?

  4. PyMySQL vrací staré/hodnoty snímku/neopakuje dotaz?