jueves, 15 de agosto de 2013

Número de días en un mes en PostgreSQL

SELECT  
    DATE_PART('days', 
        DATE_TRUNC('month', NOW()) 
        + '1 MONTH'::INTERVAL 
        - DATE_TRUNC('month', NOW())
    )

2 comentarios:

  1. Como apunte, es interesante saber que en marzo y en octubre no da el número exacto de días, porque en marzo da 30 días y 23 horas, mientras que en octubre devuelve 31 días y 1 hora por el cambio de hora que se produce, si necesitas saber el número de días que tiene marzo, sería necesario comprobarlo para obtener 31 días de la siguiente forma, por ejemplo:

    case when DATE_PART('hours', DATE_TRUNC('month', current_date) + '1 MONTH'::interval - DATE_TRUNC('month', current_date)) = 23 then
    DATE_PART('day', DATE_TRUNC('month', current_date) + '1 MONTH'::INTERVAL + '1 HOUR'::INTERVAL - DATE_TRUNC('month', current_date))
    else
    DATE_PART('day', DATE_TRUNC('month', current_date) + '1 MONTH'::INTERVAL - DATE_TRUNC('month', current_date))
    end

    ResponderEliminar