MySQL - Filtrar rango de fechas

 
Vista:
sin imagen de perfil

Filtrar rango de fechas

Publicado por Diego Zavala (9 intervenciones) el 29/03/2018 20:24:29
Hola a todos...

Tengo el siguiente query:

1
2
select idusuario from usuarios
where fechahoraRUsu between cast('2018-02-20' as date) and cast('2018-02-28' as date)

Lo que deseo hacer es visualizar el registro de usuarios entre un intervalo de fechas, estas fechas las tengo registradas en base como Datetime, ahora en mi interfaz tengo dos calendar (desde y hasta) pero estos reciben la fecha en este formato: Y-M-D, mi pregunta es como puedo hacer esta consulta.
Intente con between, date_format.

De antemano gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Filtrar rango de fechas

Publicado por xve (1151 intervenciones) el 30/03/2018 08:10:19
Hola Diego, no se si te he entendido bien... pero creo que la solución pasa por convertir las fechas a formato timestamp... haber si te sirve así:

1
2
select idusuario from usuarios
where fechahoraRUsu between UNIX_TIMESTAMP('2018-02-20') and UNIX_TIMESTAMP('2018-02-28')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Filtrar rango de fechas

Publicado por leonardo_josue (414 intervenciones) el 03/04/2018 20:57:14
Hola Diego:

adicional a lo que comenta xve, hay algo que debes de tener en consideración: si tu campo está definido como DATETIME, entonces por definición maneja FECHA Y HORA, por lo tanto debes de tener cuidado en este sentido, una recomendación sería que si sólo vas a filtrar por FECHA, entonces "quites" la hora, esto lo haces simplemente así:

1
2
3
4
...
WHERE
   DATE(fechahoraRUsu)
...

o en su defecto, manejes el DATE TIME Con formato completo (YYYY-MM-DD HH24:MI:SS)

Ahora, bien, volviendo a tu problema, MySQL y la mayoría de los DBMS manejan el formato de fecha ANSI (YYYY-MM-DD), de tal suerte, que si manejas este formato NO ES NECESARIO HACER NINGUNA CONVERSIÓN ADICIONAL, podrías filtrar tu información así:

1
2
3
4
SELECT idusuario
FROM usuarios
WHERE
   DATE(fechahoraRUsu) BETWEEN '2018-02-20' AND '2018-02-28';

o con el formato completo, considerando también la hora:

1
2
3
4
SELECT idusuario
FROM usuarios
WHERE
   fechahoraRUsu BETWEEN '2018-02-20 00:00:00' AND '2018-02-28 23:59:59';

Finalmente, supongo que al hablar de objetos tipo calendar te refieres a que estás utilizando algún tipo de lenguaje de programación como Java, .NET o algo así para hacer una interfaz. Cada lenguaje maneja sus propias funciones para convertir fechas a cadenas, pero insisto en que si la cadena la manejas con formato ANSI no tienes que hacer nada del lado de MySQL.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Filtrar rango de fechas

Publicado por Diego (9 intervenciones) el 03/04/2018 21:19:16
Hola Leo.
Como siempre agradezco tu ayuda, ya puede resolverlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar