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 |
#4 · Zasláno: 2. 5. 2014, 09:32:09
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. > ht>tp://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ě). |
||
Časová prodleva: 10 let
|
0