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

comment calculer uniquement les jours entre deux dates dans la requête postgres sql.

N'utilisez pas le age() fonction pour l'arithmétique date/heure. Il ne fait que retourner des résultats "symboliques" (qui sont assez bons pour la représentation humaine, mais presque dénués de sens pour les calculs de date/heure ; par rapport à la différence standard).

L'opérateur de différence standard (- ) renvoie des résultats basés sur le jour pour les deux date , timestamp et timestamp with time zone (le premier renvoie les jours sous la forme int , les deux derniers renvoient un interval basé sur le jour s):

À partir des intervalles basés sur les jours, vous pouvez extraire des jours avec le extract() fonction :

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