PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Calcola la differenza di mese esatta tra due date

Puoi usare age() . Se il valore è sempre inferiore a 12 mesi, un metodo è:

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 calcolo più accurato tiene conto dell'anno:

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;

Qui è un db<>violino.