Autor Zpráva
Vilak
Profil
Zdarec. Mám databázi, ze které chci vybrat data. Každý řádek obsahuje datetime, což je takto zapsaný datum: "rrrr-mm-dd hh:mm:ss". A nevím, jak mám sepsat nějakou podmínku (jestli vůbec v php nebo mysql o.O), kde bych měl, že to vybere pouze takové řádky, které nejsou starší než měsíc (30 dní).
Př.:
Teď, když to píšu, je 2015-07-20 00:59:40. Takže kdyby tam byl řádek, který by měl datetime 2015-06-20 00:55:00, tak by se neměl zobrazit.
Můj dotaz zatím vypadá takto:
                        $dotaz = mysql_query("SELECT * FROM `events` ORDER BY `id` DESC LIMIT 2");
                        echo "<table>";
                        while ($vypis = mysql_fetch_assoc($dotaz)) {
                            // výpis dat
                        }
Zapomněl jsem dodat, že by podle mě měla podmínka vypadat asi takto:
$date = Date("Y-m-d H:i:s", Time());
$dotaz = mysql_query("SELECT * FROM `events` WHERE datetime BETWEEN '$date' AND '$DATUM_O_MĚSÍC_DŘÍV' ORDER BY `id` DESC LIMIT 2");
Jak má tedy vypadat podmínka pro čas?
//edit
Alphard
Profil
Aritmetika pro datové typy (date, time, datetime) funguje očekávaným způsobem, tj. můžete přičítat intervaly a vzájemně je porovnávat. K odečtení určitého intervalu si nastudujte sub_date. Pak stačí where sloupec >= date_sub(now(), ...).
Vilak
Profil
Díky, mám to. Pro ostatní řešení zde:
SELECT * FROM `events` WHERE `datetime` >= date_sub(now(), INTERVAL 30 DAY) ORDER BY `id` DESC LIMIT 2

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: