Autor Zpráva
gully
Profil
Ahoj,

mám tabulku ucastnici, ve které mám uloženy registrace účastníků na akce. Ve sloupci rezervace_do je uloženo datum splatnosti (datum, do kterého musí účastník nejpozději uhradit částku za akci na účet) a potřeboval bych zjistit, všechny účastníky, jejichž doba splatnosti <= 24 hod.

Řešil jsem to tímto dotazem:

SELECT * FROM ucastnici WHERE (TIMEDIFF(rezervace_do, NOW()) BETWEEN '00:00:00' AND '24:00:00')

ale to zjevně není správně. Tak bych vás chtěl poprosit o pomoc.
Joker
Profil
gully:
Třeba takhle by to šlo:
SELECT * FROM ucastnici WHERE rezervace_do BETWEEN DATE_ADD(NOW(), INTERVAL -1 DAY) AND NOW()

edit: Resp. to vybere záznamy, kde rezervace_do je v uplynulých 24 hodinách.
Záznamy, kde rezervace_do je v příštích 24 hodinách, by se vybraly
SELECT * FROM ucastnici WHERE rezervace_do BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 DAY)
juriad
Profil
The result returned by TIMEDIFF() is limited to the range allowed for TIME values.
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_timediff
Takže vždy bude rozsah jen do 24 hodin.

Zkus:
TIMESTAMPDIFF(DAY, NOW(), rezervace_do) BETWEEN 0 AND 1

Joker: lepší? :)
Joker
Profil
juriad:
To ale vybere všechny dřívější záznamy, ne jen ty, kde datum_do je větší než teď.
gully
Profil
juriad:
he result returned by TIMEDIFF() is limited to the range allowed for TIME values.
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_timediff
Takže vždy bude rozsah jen do 24 hodin.
Ano, máš pravdu, je to mimo rozsah te funkce.

Taky jsem zkoušel hledat a dal jsem do kupy dotaz:
SELECT * FROM ucastnici WHERE (TIMESTAMPDIFF(SECOND, NOW(), rezervace_do) BETWEEN '0' AND '86400')

Pravda ale je, že Jokerovi dotazy vypadaji lepe.
Kajman
Profil
gully:
Pravda ale je, že Jokerovy dotazy vypadaji lepe.

A na velkých datech by měly být i rychlejší (při indexu citelně).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0