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

Vis resultater, der er tættest på den aktuelle dato og tid (MySQL &PHP)

Jeg ville droppe at bruge PHP-dato/tid-metoderne og stole på, at MySQL giver en forespørgsel, der ligner

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

OR sørger for, at den får de korrekte registreringer, ellers ville TIME-delen blokere, dvs. et resultat kl. 03:00 fra den næste dag fra at blive vist, hvis det aktuelle tidspunkt var kl. 06:00

Jeg kan se, at du bruger tidsstempelværdier der, så du altid kan indtaste PHP-datoen i stedet for CURRENT_DATE. Dette ville give et endeligt script af

$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);

Jeg vil råde dig til at overveje at ændre databasen, hvis det er muligt, til at gemme som et MySQL DATOTIME-felt, da du så kan ændre denne forespørgsel til blot WHERE datetime > NOW() , men det er helt op til dig. Har bare altid fundet MySQL-datohåndtering mere logisk end PHP'er.



  1. Android:Json er ikke i stand til at hente nogen filer fra mysql-databasen, den er tom

  2. IF-syntaksfejl

  3. Anmodningen sendt af klienten var syntaktisk forkert ved brug af @DateTimeFormat

  4. Sådan konfigureres SELinux til PostgreSQL og TimescaleDB