sql >> Database >  >> RDS >> PostgreSQL

SQL:1 dag aftrekken van een tijdstempeldatum

Gebruik de INTERVAL typ ernaar. Bijv.:

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

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

U kunt dan het volgende doen:

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

Tip 1

U kunt meerdere operanden toevoegen. Bijvoorbeeld:hoe krijg ik de laatste dag van de huidige maand?

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

Tip 2

U kunt ook een interval maken met make_interval functie, handig wanneer u deze tijdens runtime moet maken (geen letterlijke waarden gebruikt):

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

Meer info:

Datum-/tijdfuncties en operators

datatype-datetime (speciale waarden) .



  1. SQL-fout:1054, SQLState:42S22 Onbekende kolom in 'veldlijst'-fout Java Spring Boot Mysql-fout

  2. JDBC Oracle Thin Client failover naar tweede DB

  3. wat doet mysql_real_escape_string() echt?

  4. hoe vergelijkbare objecten te krijgen op basis van tags