Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

265
Vistas
Consulta PG sql para ordenar por fecha formateada en orden descendente

Estoy tratando de ordenar el nombre del mes y el año en orden descendente. La columna de fecha en la tabla es la siguiente

 orderdate ---------- 2020-12-15 2021-01-15 2021-02-15 2021-02-20 2021-03-21 2021-03-29 2021-04-15

El resultado esperado es

 monthName ----------- April 2021 March 2021 February 2021 January 2021 December 2020

Intenté esta consulta

 select distinct to_char(orderdate::date,'FMMonth YYYY') as monthName from table order by to_char(orderdate::date,'FMMonth YYYY') desc;

La consulta anterior me da el resultado como

 monthName ----------- March 2021 January 2021 February 2021 December 2020 April 2021

¿Cómo obtengo el resultado esperado de la consulta?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El problema es que está tratando de ordenar por cadena, por lo que obtiene un orden alfabético. Lo que debes hacer:

  • Ordenar por año y mes
  • Luego formatee la fecha de la manera que desee

Prueba este:

 select to_char(trunc_date,'FMMonth YYYY') from ( select distinct date_trunc('month', orderdate) as trunc_date from table order by trunc_date desc ) as cte
over 4 years ago · Santiago Trujillo Denunciar

0

primero debe ordenar por año, luego mes como número de mes:

 select distinct to_char(orderdate::date,'FMMonth YYYY') as monthName from table order by to_char(orderdate::date,'YYYY MM') desc;

lo siento, no estoy lo suficientemente familiarizado con psql para saber el formato de fecha, solo supuse que MM es un mes de dos dígitos.

over 4 years ago · Santiago Trujillo Denunciar

0

Suponiendo que la orderdate contiene texto formateado (lo cual es una mala idea por cierto), entonces

 select to_char(omonth, 'FMMonth YYYY') "monthName" from (select distinct to_date(orderdate, 'yyyy-mm') omonth from the_table) t order by omonth desc;

Si el tipo de fecha de orderdate es date , entonces

 select to_char(omonth, 'FMMonth YYYY') "monthName" from (select distinct date_trunc('month', orderdate) omonth from the_table) t order by omonth desc;
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda