Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/07/2011, 08:07
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 2 meses
Puntos: 447
Respuesta: Consulta para extraer datos por fecha

Hola uebdisain:

Me sorprende que digas que haz buscado por todos lados sin encontrar una respuesta, sobre todo cuando el tema de manejo de rangos de fechas es recurrente, me parece que el problema es que no supiste buscar correctamente.

Si tu campo es tipo date nunca vas a poder obtener una consulta como la que quieres, ya que este tipo de dato no almacena la hora, sólo almacena la fecha:

Código MySQL:
Ver original
  1. mysql> create table fechas (campo_date DATE, campo_datetime DATETIME,
  2.     -> campo_time TIME);
  3. Query OK, 0 rows affected (0.16 sec)
  4.  
  5. mysql> INSERT INTO fechas VALUES ( '2011-07-21 12:00:00',
  6.     -> '2011-07-21 12:00:00','2011-07-21 12:00:00');
  7. Query OK, 1 row affected, 1 warning (0.07 sec)
  8.  
  9. mysql> select * from fechas;
  10. +------------+---------------------+------------+
  11. | campo_date | campo_datetime      | campo_time |
  12. +------------+---------------------+------------+
  13. | 2011-07-21 | 2011-07-21 12:00:00 | 12:00:00   |
  14. +------------+---------------------+------------+
  15. 1 row in set (0.00 sec)

Ahora bien, supongo que simplemente fue un error de redacción y tu campo es tipo datetime, por lo tanto la consulta podría quedar más o menos así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE fechas (id INT, fecha DATETIME);
  2. Query OK, 0 rows affected (0.09 sec)
  3.  
  4. mysql> INSERT INTO fechas VALUES
  5.     -> (1, '2011-07-20 08:59:59'),(2, '2011-07-20 09:00:00'),
  6.     -> (3, '2011-07-20 13:00:00'),(4, '2011-07-20 19:00:00'),
  7.     -> (5, '2011-07-21 09:00:00'),(6, '2011-07-21 09:00:01');
  8. Query OK, 6 rows affected (0.07 sec)
  9. Records: 6  Duplicates: 0  Warnings: 0
  10.  
  11. mysql> select * from fechas;
  12. +------+---------------------+
  13. | id   | fecha               |
  14. +------+---------------------+
  15. |    1 | 2011-07-20 08:59:59 |
  16. |    2 | 2011-07-20 09:00:00 |
  17. |    3 | 2011-07-20 13:00:00 |
  18. |    4 | 2011-07-20 19:00:00 |
  19. |    5 | 2011-07-21 09:00:00 |
  20. |    6 | 2011-07-21 09:00:01 |
  21. +------+---------------------+
  22. 6 rows in set (0.00 sec)
  23.  
  24. mysql> SELECT * FROM fechas WHERE fecha
  25.     -> BETWEEN '2011-07-20 09:00:00' AND '2011-07-21 09:00:00';
  26. +------+---------------------+
  27. | id   | fecha               |
  28. +------+---------------------+
  29. |    2 | 2011-07-20 09:00:00 |
  30. |    3 | 2011-07-20 13:00:00 |
  31. |    4 | 2011-07-20 19:00:00 |
  32. |    5 | 2011-07-21 09:00:00 |
  33. +------+---------------------+
  34. 4 rows in set (0.00 sec)

Los registros 1 y 6 quedan fuera de la consulta pues el primero es un segundo antes del límite inferior y el 6 es un segundo después del límite superior.

Dale un vistazo y si continuas con dudas acude primero a la documentación o pregúntale a San Google, seguramente él te dará la respuesta.

Saludos
Leo.