Mysql
 sql >> Database >  >> RDS >> Mysql

Mostra il risultato più vicino alla data e all'ora correnti (MySQL e PHP)

Vorrei abbandonare l'utilizzo dei metodi di data/ora di PHP e fare affidamento su MySQL per fornire una query simile a

SELECT * FROM table_name 
WHERE date > CURRENT_DATE
OR (
    date = CURRENT_DATE
    AND 
    time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1

L'OR si assicura che ottenga i record corretti, altrimenti la parte TIME bloccherebbe la visualizzazione di un risultato alle 03:00 del giorno successivo se l'ora corrente fosse alle 06:00

Vedo che stai usando valori di timestamp lì, quindi puoi sempre passare il numerico della data PHP al posto di CURRENT_DATE. Questo darebbe uno script finale di

$timestamp_now = strtotime(date('d-m-Y')); //Creates a timestamp of the currect date
$sql = mysql_query('SELECT * FROM table_name 
                    WHERE date > '.$timestamp_now.'
                    OR (
                        date = '.$timestamp_now.'
                        AND 
                        time > CURRENT_TIME
                    )
                    ORDER BY date ASC, time ASC LIMIT 1') or die(mysql_error());
$data = mysql_fetch_array($sql);

Consiglierei di considerare la possibilità di modificare il database, se possibile, per archiviarlo solo come campo MySQL DATETIME, poiché in tal caso è possibile modificare questa query semplicemente in WHERE datetime > NOW() , ma dipende interamente da te. Ho sempre scoperto che la gestione della data MySQL è più logica di PHP.