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

So berechnen Sie nur Tage zwischen zwei Daten in der Postgres-SQL-Abfrage

Verwenden Sie nicht das age() Funktion für Datum/Uhrzeit-Arithmetik. Es gibt nur "symbolische" Ergebnisse zurück (die für die menschliche Darstellung gut genug sind, aber für Datums-/Uhrzeitberechnungen fast bedeutungslos sind; verglichen mit der Standarddifferenz).

Der standardmäßige Differenzoperator (- ) gibt tagesbasierte Ergebnisse für beide date zurück , timestamp und timestamp with time zone (Erstere gibt Tage als int zurück , die letzten beiden geben ein tagesbasiertes interval zurück s):

Aus den tagesbasierten Intervallen können Sie mit extract() Tage extrahieren Funktion:

select current_date - '2017-01-01',
       extract(day from now()::timestamp - '2017-01-01 00:00:00'),
       extract(day from now()            - '2017-01-01 00:00:00Z');

http://rextester.com/RBTO71933