La siguiente consulta:
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')
no devuelve nada
Sin embargo, debería tener datos más que suficientes para que la consulta funcione. ¿Qué estoy haciendo mal?
min
y losmax
valores se consideran dentro del rango, para no procesar dos veces una fecha que sea el valormin
ymax
(caso límite). Por ejemplo, la fecha2010-09-29 00:00:00
será entre2010-09-28 00:00:00
y2010-09-29 00:00:00
, Y TAMBIÉN entre2010-09-29 00:00:00
y2010-09-30 00:00:00
Respuestas:
Su segunda fecha es anterior a su primera fecha (es decir, está realizando consultas entre el 29 de septiembre de 2010 y el 30 de enero de 2010). Intente invertir el orden de las fechas:
fuente
where
cláusula debería funcionar igual enselect
oupdate
declaraciones.Su consulta debe tener fecha como
tratar
fuente
Es
date_field
de tipodatetime
? También debe poner primero la fecha del auricular.Debería ser:
fuente
DATE () es una función MySQL que extrae solo la parte de fecha de una expresión de fecha o fecha / hora
fuente
Como extensión de la respuesta de @sabin y una pista si solo se quiere comparar la parte de la fecha (sin la hora):
Si el campo para comparar es del tipo fecha y hora y solo se especifican fechas para la comparación, entonces estas fechas se convierten internamente en valores de fecha y hora . Esto significa que la siguiente consulta
se convertirá a
internamente.
¡Esto a su vez conduce a un resultado que no incluye los objetos del 29/09/2010 con un valor de tiempo mayor que 00:00:00!
Por lo tanto, si todos los objetos con fecha 29/09/2010 también deberían incluirse, el campo para comparar debe convertirse en una fecha:
fuente
Puede hacerlo manualmente, comparando con mayor que o igual y menor que o igual.
En nuestro ejemplo, necesitamos recuperar datos de un día en particular. Compararemos desde el comienzo del día hasta el último segundo de otro día.
fuente
Podría ser un problema con la configuración de la fecha en el lado del servidor o en el lado del cliente. He encontrado que este es un problema común en múltiples bases de datos cuando el host está configurado en español, francés o lo que sea ... eso podría afectar el formato dd / mm / aaaa o mm / dd / aaaa.
fuente
Just Cast date_field as date
fuente
Cuando utilice valores de fecha y hora, debe convertir los campos como
DateTime
y noDate
. Tratar :fuente
Intenta cambiar las fechas:
fuente