PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL:Subtrahieren von 1 Tag von einem Zeitstempeldatum

Verwenden Sie das INTERVAL tippe dazu. Beispiel:

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

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

Sie können dann Folgendes tun:

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;

TIPPS

Tipp 1

Sie können mehrere Operanden anhängen. Beispiel:Wie bekomme ich den letzten Tag des aktuellen Monats?

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

Tipp 2

Sie können ein Intervall auch mit make_interval erstellen Funktion, nützlich, wenn Sie sie zur Laufzeit erstellen müssen (keine Literale verwenden):

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

Weitere Informationen:

Datums-/Zeitfunktionen und Operatoren

datatype-datetime (besondere Werte) .