sql >> Database >  >> RDS >> PostgreSQL

Krijg het aantal dagen in een maand in PostgreSQL

Hier is een voorbeeld van het gebruik van PostgreSQL om het aantal dagen in een maand te retourneren, gebaseerd op een bepaalde datum.

SELECT 
    date_part(
        'days', 
        (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')
        );

Resultaat:

31

Hier gebruikten we de date_part() functie om het dagnummer van de laatste dag van de maand te retourneren. We hebben de laatste dag van de maand gekregen door date_trunc() . te gebruiken om de precisie van de datum af te kappen tot de maand, en ook door een datumverschuiving op het resultaat uit te voeren.

Hier is nog een voorbeeld, deze keer wordt het aantal dagen in elke maand geretourneerd:

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";

Resultaat:

+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|  31 |  28 |  31 |  30 |  31 |  30 |  31 |  31 |  30 |  31 |  30 |  31 |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

Houd er rekening mee dat het aantal dagen voor februari kan veranderen, afhankelijk van of het een schrikkeljaar is of niet.


  1. CSV-gegevens invoegen in PostgreSQL-database (externe database)

  2. Als PostgreSQL count(*) altijd traag is, hoe moet u dan complexe query's pagineren?

  3. bij het invoegen van een Perzisch teken in oracle db zie ik het vraagteken

  4. Hoe krijg ik tekstuele inhoud van BLOB in Oracle SQL?