sql >> Databáze >  >> RDS >> Mysql

Zobrazit výsledek nejbližší aktuálnímu datu a času (MySQL a PHP)

Přestal bych používat metody data/času v PHP a spoléhal bych na to, že MySQL poskytne dotaz, který vypadá jako

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 zajišťuje, že dostává správné záznamy, jinak by se část TIME zablokovala, tj. neobjevil by se výsledek ve 03:00 následujícího dne, pokud by aktuální čas byl v 06:00

Vidím, že tam používáte hodnoty časového razítka, takže vždy můžete místo CURRENT_DATE zadat číselné datum PHP. To by poskytlo konečný skript

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

Doporučil bych zvážit změnu databáze, pokud je to možné, aby se ukládala pouze jako pole MySQL DATETIME, protože pak můžete tento dotaz změnit na jednoduše WHERE datetime > NOW() , ale to je čistě na vás. Vždy jsem považoval zpracování data MySQL za logičtější než PHP.



  1. Počítejte a seskupujte neprázdné hodnoty v MySQL

  2. Osvědčený postup pro vytváření indexů v tabulkách MySQL – Rolling Index Builds

  3. Vrátit duplicitní záznamy

  4. Tabulka vnitřního spojení s ohledem na maximální hodnotu