Saltar al contenido

¿Cómo obtener el último día del mes en postgres?

Este dilema se puede abordar de diferentes maneras, sin embargo te mostramos la solución más completa en nuestra opinión.

Solución:

Para cualquiera que llegue a esta pregunta buscando el postgres manera de hacer esto (sin usar Redshift), así es como lo haría:

SELECT (date_trunc('month', '2017-01-05'::date) + interval '1 month' - interval '1 day')::date
AS end_of_month;

Reemplazo de la '2017-01-05' con la fecha que quieras usar. Puedes convertir esto en una función como esta:

create function end_of_month(date)
returns date as
$$
select (date_trunc('month', $1) + interval '1 month' - interval '1 day')::date;
$$ language 'sql'
immutable strict;

Simplemente usando la función last_day:

select last_day(to_date(act_date,'YYYYMMDD'))

PD: Ahora, creo que sabes que es muy importante elegir las etiquetas correctas para tu propia pregunta.

Bien, entonces tienes un numeric(18) columna que contiene números como 20150118. Puede convertir eso en una fecha como:

to_date(your_date_column::text, 'YYYYMMDD')

A partir de una fecha, puede tomar el último día del mes como:

(date_trunc('month', your_date_column) + 
    interval '1 month' - interval '1 day')::date;

Combinado, obtendrías:

select  (date_trunc('month', to_date(act_dt::text, 'YYYYMMDD')) + 
           interval '1 month' - interval '1 day')::date
from    YourTable;

Ejemplo en SQL Fiddle.

Si para ti ha resultado útil este post, agradeceríamos que lo compartas con otros entusiastas de la programación de esta manera nos ayudas a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *