PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQL :Soustraire 1 jour à une date d'horodatage

Utilisez le INTERVAL tapez dessus. Ex :

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

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

Vous pouvez alors faire ce qui suit :

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;

CONSEILS

Astuce 1

Vous pouvez ajouter plusieurs opérandes. Ex. :comment obtenir le dernier jour du mois en cours ?

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

Astuce 2

Vous pouvez également créer un intervalle en utilisant make_interval fonction, utile lorsque vous devez la créer au moment de l'exécution (sans utiliser de littéraux) :

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

Plus d'informations :

Fonctions et opérateurs de date/heure

datatype-datetime (valeurs spéciales) .