Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta para extraer datos por fecha

Estas en el tema de Consulta para extraer datos por fecha en el foro de Mysql en Foros del Web. Buenas, Estuve buscando por todos lados pero no encuentro respuesta para la consulta que necesito generar y no se mucho de Mysql. Tengo una tabla ...
  #1 (permalink)  
Antiguo 21/07/2011, 07:21
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Consulta para extraer datos por fecha

Buenas,
Estuve buscando por todos lados pero no encuentro respuesta para la consulta que necesito generar y no se mucho de Mysql.

Tengo una tabla con nombre - apellido - empresa - fecha (campo de tipo date)

Necesito una consulta que me filtre los datos de un día a las 9hs hasta el día siguiente a las 9hs. Por ejemplo:
- Día 20 desde las 9:00hs hasta día 21 a las 09:00hs.

Algun idea?.
Gracias!
Daniela.
  #2 (permalink)  
Antiguo 21/07/2011, 08:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #3 (permalink)  
Antiguo 21/07/2011, 09:02
Avatar de ArkangelGammar  
Fecha de Ingreso: enero-2011
Ubicación: <?php $persona->ubicacion('ArkangelGammar'); ?>
Mensajes: 179
Antigüedad: 13 años, 4 meses
Puntos: 19
Respuesta: Consulta para extraer datos por fecha

O simplemente podrias usar las funcion especificas de MySql, pero logicamente, tenes que usar el campo DATETIME, caso contrario nunca vas a poder preguntar por la hora

Código PHP:
$sql 'SELECT * FROM TABLA
WHERE  (DAY(fecha) BETWEEN '
.$dia1.' and '.$dia2.'  AND
           (HOUR(fecha) BETWEEN '
.$hora1.' and '.$hora2.')'

Espero haber sido de utilidad,

Saludos,
__________________
"No entiendes algo al menos que seas capaz de explicarselo a tu abuela.
Cada dia sabemos mas....y entendemos menos...."

A. Einstein - Genio mas alla de la razon.
  #4 (permalink)  
Antiguo 13/08/2011, 14:22
 
Fecha de Ingreso: agosto-2010
Mensajes: 25
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Consulta para extraer datos por fecha

Hola. Tengo un problema parecido. Quiero que busquen horarios de salidas de omnibus especificando en un formulario origen, destino, y el rango horario desde y hasta, todo con campos select ('$desde', '$hasta', '$hora1' y '$hora2'). La base de datos tiene una tabla con los campos id, ruta, ciudad, hora.
Si '$hora1' es menor a '$hora2' la búsqueda se realiza sin problemas. El tema es cuando busco por ejemplo en el rango de 22:00:00 hasta 09:00:00, ahí no da resultados aunque sí hay registros en la base en esa franja. Probé las dos formas que plantearon acá pero no me funcionaron.
Agradezco toda ayuda

Etiquetas: fecha, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:06.