Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

274
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda