Autor Zpráva
Kamil Papica
Profil *
Zdravím,

v databázi mám uloženy události. (počáteční datum, konečné datum a popis události). Datumy jsou v unix timestamp.
Hledám takový dotaz, který by dokázal vrátit řádky s dni, jen pro ten konkrétní měsíc (z rozsahu datum. Řekneme pro měsíc říjen. Dokážu si poradit s dny, který začínají a končí mezi prvním a posledním dnem hledaného měsíce.

$first_day_timestamp = mktime(0, 0, 0, $mm, 1, $yyyy);
$last_day_timestamp = mktime(24, 0, 0, $mm, $days, $yyyy);

SELECT * FROM datumy WHERE start BETWEEN {$first_day_timestamp} AND {$last_day_timestamp} AND stop > 0 ORDER BY start ASC";

Ale co s událostmi, které začínají před hledaným měsícem, případně konči po., resp. aj aj. :)
Nenapadá Vás prosím řešení? Předem dekuji.
Keeehi
Profil
Ty chceš všechny, které začínají nebo končí ten měsíc a taky ty, které začínají před a končí po. Dá se to ale udělat doplňkem, což mi přijde hezčí. Chceš všechny, jejichž konec je po začátku měsíce a zároveň jejichž začátek je před koncem měsíce.
WHERE start <= $last_day_timestamp AND finish >= $first_day_timestamp
Kamil Papica
Profil *
Pardon, nevyjádřil jsem se zcela přesne. Potřeboval bych dotazem získat všechny uálosti, které mají mezi začátkem a koncem konkrétní měsíc. Anebo se vyskytuju v konkrétním měsíci. Uvedu přiklad:
Události, ktére by měly být získány dotazem (pro měsíc říjen):
2.10. - 7.10 (událost uvnitř měsíce)
28.9 - 15.10 (událost začíná v září, ale zasahuje do hledaného měsíce)
29.10 - 5.11. (událost zacína v říjnu, ale končí v jiném měsíci)
28.9 - 5.11. (událost prochází hledaným měsícem)

28.9 - 29.9. (tato událost nesplnuje kriteria)
5.11. - 12.12. (detto)

Jednoduše řečeno, dotaz na události, které mají v rozsahu hledaný měsíc. Dekuji.
tiso
Profil
Kamil Papica: „Potřeboval bych dotazem získat všechny...
Ale veď presne to Keeehi-ho riešenie robí.
Kamil Papica
Profil *
Pane jo, máte pravdu. Mockrát Vám děkuji pánové.. Zmátlo mňe, že dotaz vracel i události z 1.11. Vyřešil jsem to opravou $last_day_timestamp
$last_day_timestamp = mktime(24, 0, 0, $mm, $days, $yyyy)-1;

Děkuji!
anonymníí
Profil *
Kamil Papica:
Ono stačí zadat sprvný čas, tedy 23:59:59 místo 24:00:00 (což už je 1. listopadu).

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