Php MySQL Query più popolare nelle ultime 24 ore
-
15-09-2020 - |
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");
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)
.