PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Obter o número de dias em um mês no PostgreSQL


Aqui está um exemplo de uso do PostgreSQL para retornar o número de dias em um mês, com base em uma determinada data.
SELECT 
    date_part(
        'days', 
        (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')
        );

Resultado:
31

Aqui, usamos o date_part() função para retornar o número do dia do último dia do mês. Pegamos o último dia do mês usando date_trunc() para truncar a precisão da data para o mês, e também realizando algum deslocamento de data no resultado.

Aqui está outro exemplo, desta vez retornando o número de dias em cada mês:
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";

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

Esteja ciente de que o número de dias de fevereiro pode mudar dependendo de ser um ano bissexto ou não.