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

Få antallet af dage i en måned i PostgreSQL

Her er et eksempel på brug af PostgreSQL til at returnere antallet af dage i en måned, baseret på en given dato.

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

Resultat:

31

Her brugte vi date_part() funktion for at returnere dagnummeret for den sidste dag i måneden. Vi fik den sidste dag i måneden ved at bruge date_trunc() at afkorte datoens præcision til måneden, og også ved at udføre en datoforskydning på resultatet.

Her er et andet eksempel, denne gang med antallet af dage i hver måned:

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 |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+

Vær opmærksom på, at antallet af dage for februar kan ændre sig afhængigt af, om det er et skudår eller ej.


  1. SQLite-forespørgsel:få alle kolonner i en række (android)?

  2. Oracle 11g på Mac OS X

  3. Sådan returneres kun Datoen fra en SQL Server DateTime-datatype

  4. Sådan sorteres i SQL