2012-03-15 1 views
5

Tengo esta consulta que busca resultados de una base de datos durante los últimos veinte minutos, ahora sé cómo buscar en horas, días, etc., pero ¿es posible buscar solo hasta el momento? volver como la medianoche de ese día. Entonces, ¿cuándo se ejecuta la consulta y en cualquier momento solo mira hacia atrás hasta la medianoche?Mysql Query solo hasta la medianoche

SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) and ip='$ip' 

Este es mi código, pero está fuera de lugar en el que puedo reemplazar el intervalo por un tiempo específico.

Cualquier ayuda sería apreciada.

+0

puede utilizar date_format mysql() y ahora() –

Respuesta

22

Mirando hacia atrás hasta la medianoche del día actual es el mismo que mirar la fecha actual sin componente de tiempo. Por lo tanto, puede usar DATE() para truncar la columna de fecha y hora date a solo la parte de fecha y compararla con CURDATE().

SELECT * FROM ip_stats WHERE DATE(date) = CURDATE() and ip='$ip' 
+0

que funcionaba perfecto gracias, yo no sé por qué no pensé en eso. –

+0

Creo que esta es la solución perfecta para obtener registros del día actual. –

0

Simplemente haga que la columna date sea más grande que curdate (que es el comienzo de este día).

SELECT * FROM ip_stats 
WHERE date >= (NOW() - INTERVAL 20 MINUTE) 
and date > CURDATE() 
and ip='$ip' 
+1

vas a querer a> =, no una> – Jason

0

Puede utilizar CURDATE() para obtener filas desde la medianoche del día actual:

SELECT * FROM ip_stats WHERE date >= CURDATE() and ip='$ip' 
1
SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) AND date >= CURDATE() and ip='$ip' 
0
SELECT * 
FROM ip_stats 
WHERE date >= GREATEST(NOW() - INTERVAL 20 MINUTE, CURRENT_DATE) 
AND ip = '$ip'