sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL:Subtraherar 1 dag från ett tidsstämpeldatum

Använd INTERVAL skriv till det. T.ex.:

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

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

Du kan göra följande då:

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;

TIPS

Tips 1

Du kan lägga till flera operander. T.ex.:hur får man den sista dagen i innevarande månad?

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

Tips 2

Du kan också skapa ett intervall med make_interval funktion, användbar när du behöver skapa den under körning (inte med hjälp av bokstaver):

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

Mer info:

Datum/tid-funktioner och -operatörer

datatyp-datumtid (särskilda värden) .



  1. PostgreSQL Skapa schema

  2. Det gick inte att ladda autentiseringsplugin 'caching_sha2_password' i Netbean

  3. Mysql långsam fråga:INNER JOIN + ORDER BY orsakar filsortering

  4. Utf-8-tecken visas som ISO-8859-1