Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/04/2013, 15:07
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: Ordenar Select por campo Time

Hola Gorriak:

estamos de acuerdo que el orden no es un orden "natural" verdad??? por lo tanto tú tienes que forzar el ordenamiento que necesitas... si quieres que se presenten primero los registros que están entre las 23:00 y las 23:59:59 y en seguida los registros de las 00:00:00 en adelante, puedes hacerlo con una ordenación condicional, checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +----------+
  3. | tiempo   |
  4. +----------+
  5. | 23:00:00 |
  6. | 00:05:00 |
  7. | 23:30:00 |
  8. | 00:00:01 |
  9. | 22:29:59 |
  10. | 00:00:00 |
  11. | 23:59:59 |
  12. +----------+
  13. 7 rows in set (0.02 sec)
  14.  
  15. mysql> SELECT tiempo, IF(tiempo BETWEEN '23:00:00' AND '23:59:59', 1, 2) orden
  16.     -> FROM tabla
  17.     -> ORDER BY IF(tiempo BETWEEN '23:00:00' AND '23:59:59', 1, 2), tiempo;
  18. +----------+-------+
  19. | tiempo   | orden |
  20. +----------+-------+
  21. | 23:00:00 |     1 |
  22. | 23:30:00 |     1 |
  23. | 23:59:59 |     1 |
  24. | 00:00:00 |     2 |
  25. | 00:00:01 |     2 |
  26. | 00:05:00 |     2 |
  27. | 22:29:59 |     2 |
  28. +----------+-------+

Observa que lo que hace es asignar un 1 a todas las horas que están entre las 23:00:00 y las 23:59:59 y un 2 al resto... de tal manera que primero ordena por este criterio y en seguida por la hora correspondiente.

Saludos
Leo.