Pregunta

Supongamos que queremos obtener diez discos MÁS le gusta en las últimas 24 horas.He aquí lo que tengo hasta ahora:

$date = date("o-m-d");
$query = "SELECT date_created,COUNT(to),from,to FROM likes WHERE date_created LIKE '$date%' GROUP BY to ORDER BY COUNT(to) DESC LIMIT 10";

El problema con el que es que sólo se pone el que más le gustaba de ESE DÍA, no importa lo lejos que día es.Que no se ponga el que más le gustaba de las últimas 24 horas.

estructura para gustos: de | a | date_created | id

las fechas están en la norma ISO tiempo - ejemplo 2010-07-14T00:35:31-04:00.Vienen directamente desde el PHP de referencia:fecha("c");

¿Fue útil?

Solución

WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)

Otros consejos

Si su campo Date_Created es un tipo de campo DateTime o Timestamp, puede usar Date_sub en su cláusula donde sigue;


WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)

Así que en primer lugar date_created debe ser definido como una marca de tiempo con default current timestamp.Si usted tiene un date_modified en la tabla y, a continuación, date_modified habría on update current timestamp y se puede definir con la fecha de creación como una marca de tiempo y de este disparador para actualizarlo

CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()

Ahora que tenemos una marca de tiempo se pueden aplicar fácilmente a algunos de los de mysql funciones de fecha para la columna.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Voy a dejar lo que debe hacer como un ejercicio para el lector, a menos que usted dice bastante por favor y me quiere dar a conocer la sintaxis exacta.

Debe estar usando funciones de fecha / hora, en lugar de similares.

WHERE date_created >= (NOW() - INTERVAL 24 HOUR)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top