Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ordina per data in SQL

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

Il primo termine imposta l'ordine primario entro il mese di resource_date (il mese corrente sarà il primo, il precedente, l'ultimo). Il secondo termine ordina i timestamp entro un mese indipendentemente dall'anno della data. Se le tue date non contengono parti temporali o se le parti temporali sono assolutamente irrilevanti, puoi sostituirle con DAY(resource_date) . Infine, l'ultimo termine tiene conto dell'anno per date altrimenti identiche (potrebbe anche essere semplicemente resource_date ).