Här är ett exempel på hur du använder PostgreSQL för att returnera antalet dagar i en månad, baserat på ett givet datum.
SELECT
date_part(
'days',
(date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')
);
Resultat:
31
Här använde vi date_part()
funktion för att returnera dagnumret för den sista dagen i månaden. Vi fick den sista dagen i månaden genom att använda date_trunc()
för att avkorta datumets precision till månaden, och även genom att utföra vissa datumförskjutningar på resultatet.
Här är ett annat exempel, denna gång med antalet dagar i varje månad:
SELECT
date_part('days', (date_trunc('month', date '2030-01-14') + interval '1 month - 1 day')) AS "Jan",
date_part('days', (date_trunc('month', date '2030-02-14') + interval '1 month - 1 day')) AS "Feb",
date_part('days', (date_trunc('month', date '2030-03-14') + interval '1 month - 1 day')) AS "Mar",
date_part('days', (date_trunc('month', date '2030-04-14') + interval '1 month - 1 day')) AS "Apr",
date_part('days', (date_trunc('month', date '2030-05-14') + interval '1 month - 1 day')) AS "May",
date_part('days', (date_trunc('month', date '2030-06-14') + interval '1 month - 1 day')) AS "Jun",
date_part('days', (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')) AS "Jul",
date_part('days', (date_trunc('month', date '2030-08-14') + interval '1 month - 1 day')) AS "Aug",
date_part('days', (date_trunc('month', date '2030-09-14') + interval '1 month - 1 day')) AS "Sep",
date_part('days', (date_trunc('month', date '2030-10-14') + interval '1 month - 1 day')) AS "Oct",
date_part('days', (date_trunc('month', date '2030-11-14') + interval '1 month - 1 day')) AS "Nov",
date_part('days', (date_trunc('month', date '2030-12-14') + interval '1 month - 1 day')) AS "Dec";
Resultat:
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 | +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
Tänk på att antalet dagar för februari kan ändras beroende på om det är ett skottår eller inte.