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

Calculer la différence de mois exacte entre deux dates

Vous pouvez utiliser age() . Si la valeur est toujours inférieure à 12 mois, une méthode est :

SELECT iv.product_name,
       extract(month form age('2020-12-20'::date, MAX(iv.inventory_date::date))) AS months_in_inventory
FROM inventory iv
GROUP BY 1
ORDER BY 1;

Un calcul plus précis tient compte de l'année :

SELECT iv.product_name,
       (extract(year from age('2020-12-20'::date, MAX(iv.inventory_date::date))) * 12 +
        extract(month from age('2020-12-20'::date, MAX(iv.inventory_date::date)))
       ) AS months_in_inventory
FROM inventory iv
GROUP BY 1
ORDER BY 1;

ici est un db<>violon.