Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Classificar por data no SQL

ORDER BY
  (MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
  DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
  YEAR(resource_date)

O primeiro termo define a ordem principal pelo mês de resource_date (o mês atual será o primeiro, o anterior, o último). O segundo termo ordena os carimbos de data/hora dentro de um mês, independentemente do ano da data. Se suas datas não contiverem partes de tempo ou se as partes de tempo forem absolutamente irrelevantes, você poderá substituí-las por DAY(resource_date) . Finalmente, o último termo leva em consideração o ano para datas idênticas (também pode ser simplesmente resource_date ).