Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/07/2012, 13:26
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consultar registros en un rango de varios campos

Hola NSD:

Es la primera vez que leo a alguien decir que es más fácil trabajar las fechas como campos separados que como un campo fecha... me sorprende que pienses así, puedo asegurarte que no es así, además del espacio de más que estás ocupando, puedes tener un grave problema de integridad, pues nada te impide poner un 76 como día o un 65 como mes... Es decir, tienes que tener reglas de integridad para asegurar que lo que estás almacenando sea consistente con una fecha válida... los campos tipo DATETIME, DATE y TIME existen por una razón no crees???

¿Necesitas manejar en tu programa los datos por separado?, perfecto, nada te impide hacerlo y MySQL proporciona las funciones necesarias para que lo hagas si necesidad de hacer malabares:

Código MySQL:
Ver original
  1. mysql> SELECT NOW(), YEAR(NOW()), MONTH(NOW()), DAY(NOW());
  2. +---------------------+-------------+--------------+------------+
  3. | NOW()               | YEAR(NOW()) | MONTH(NOW()) | DAY(NOW()) |
  4. +---------------------+-------------+--------------+------------+
  5. | 2012-07-19 14:20:32 |        2012 |            7 |         19 |
  6. +---------------------+-------------+--------------+------------+
  7. 1 row in set (0.02 sec)
  8.  
  9. mysql> SELECT NOW(), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
  10. +---------------------+-------------+---------------+---------------+
  11. | NOW()               | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
  12. +---------------------+-------------+---------------+---------------+
  13. | 2012-07-19 14:21:10 |          14 |            21 |            10 |
  14. +---------------------+-------------+---------------+---------------+
  15. 1 row in set (0.01 sec)

Entonces, ¿por qué complicarse la vida?

si puedes cambiar tu modelo de datos HAZLO, pero si te empeñas en seguir trabajando como hasta ahora, lo que tienes que hacer es crear una cadena a partir de los datos separados para convertirla a tipo DATE y de así comparara simplemente por rangos de fecha y hora...

Saludos
Leo.