Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    order by data più vicina a oggi



    Ho una serie di record su MSQL con un campo DATA

    Dovrei ordinare i record partendo dalla data + vicina a quella odierna e mettendo in coda i record con data < a quella di oggi..
    -------------------------------
    Es:
    Data
    15/04/2011
    12/04/2011
    22/04/2011
    26/04/2011
    -------------------------------
    L'ordinamento deve essere così
    Oggi è il 21/04/2011

    ordinamento
    22/04/2011 - 26/04/2011 - 15/04/2011 - 12/04/2011

    Come posso ottenere questo order by subito dalla query?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova così.

    codice:
    select *
    from tabella
    order by if(data >= curdate(),0,1), abs(datediff(data,curdate()))

  3. #3

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prego. Per scrupolo prova anche questa

    codice:
    (select * from tabella where data >= curdate() order by data limit 18446744073709551615)
    union all
    (select * from tabella where data < curdate() order by data desc limit 18446744073709551615)
    Credo che su un largo insieme di record (con data indicizzato) dovrebbe essere più veloce. Fai un pò di test.

  5. #5
    Grazie Nicola sei stato gentilissimo davvero.
    Ora faccio qualche test.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.