Domanda

Dì che voglio ottenere dieci record con i più simpatie nelle ultime 24 ore.Ecco cosa ho finora:

$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";
.

Il problema con quello è che ottiene solo il più piacevole da quel giorno, non importa quanto sia lontano in quel giorno.Non ha il più apprezzato dalle ultime 24 ore.

Struttura per Mi piace: Da |a |.Data_Created |.ID

Le date sono in Time ISO standard - Esempio 2010-07-14T00: 35: 31-04: 00.Vieni direttamente dal riferimento PHP: Data ("C");

È stato utile?

Soluzione

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

Altri suggerimenti

Se il campo Date_Created è un tipo di campo DateTime o Timestamp, è possibile utilizzare Date_sub nella tua clausola dove segue;


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

.

Quindi la prima data di sconto_created deve essere definita come un timestamp con su default current timestamp.Se si dispone di una data_modificata nella tabella, quindi data_modificata avrebbe generatori on update current timestamp e è possibile definire con la data creata come timestamp e questo trigger per aggiornarlo

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

Ora che abbiamo un timestamp che puoi facilmente applicare alcune delle funzioni della data MySQL alla colonna.

http://dev.mysql.com / doc / refan / 5.1 / it / data-and-time-functions.html

Lascerò cosa fare come esercizio per il lettore, a meno che tu non dica carina per favore e voglio che io dia la sintassi esatta.

Dovresti usare le funzioni di data / ora, anziché come.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top