Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/10/2015, 13:42
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Datetime no arroja correctamente el resultado.

Hola marco64yes:

Tal como lo comenta gnzsoloyo, MySQL no hace "cosas raras" con las fechas... si una consulta no está regresando correctamente los datos entonces tienes un problema con los datos, no con la consulta. Checa este ejemplo, partiendo de los mismos datos que dices tener en tu tabla:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+---------------------+
  3. | id   | fecha               |
  4. +------+---------------------+
  5. |    1 | 2015-08-18 21:43:28 |
  6. |    2 | 2015-08-18 21:46:31 |
  7. |    3 | 2015-08-18 21:53:31 |
  8. |    4 | 2015-08-18 22:50:07 |
  9. |    5 | 2015-08-18 22:50:11 |
  10. |    6 | 2015-08-18 22:50:16 |
  11. |    7 | 2015-08-18 22:50:20 |
  12. +------+---------------------+
  13. 7 rows in set (0.02 sec)

Entonces, si quisieras mostrar sólo el rango entre las 21:45:00 y las 21:55:00, es decir, los id's 2 y 5, harías algo así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla
  2.     -> WHERE fecha
  3.     -> BETWEEN '2015-08-18 21:45:00' AND '2015-08-18 21:55:00';
  4. +------+---------------------+
  5. | id   | fecha               |
  6. +------+---------------------+
  7. |    2 | 2015-08-18 21:46:31 |
  8. |    3 | 2015-08-18 21:53:31 |
  9. +------+---------------------+
  10. 2 rows in set (0.00 sec)

Luego entonces, la consulta funciona y funciona bien. Ahora, hay varias cosas que deberías revisar aunque parezcan obvias:

1. De qué tipo de datos es tu campo fecha? puedo suponer que se trata de un tipo datetime, pero un error bastante común es poner los campos como varchar, esto hace que las comparaciones tengan un comportamiento distinto, pues las cadenas no siguen la ordenación de "numérica", sino alfabética.

2. Estás ejecutando la consulta directamente en una consola de MySQL o lo haces mediante algún lenguaje de programación? Si es esto último, el error puede estar en la forma en que ejecutas la sentencia, no tanto en la sentencia en si.

Saludos
Leo