Autor | Zpráva | ||
---|---|---|---|
Kamil Papica Profil * |
#1 · Zasláno: 27. 10. 2015, 11:26:18
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 * |
#3 · Zasláno: 27. 10. 2015, 12:15:29
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 |
#4 · Zasláno: 27. 10. 2015, 12:18:11
Kamil Papica: „Potřeboval bych dotazem získat všechny...“
Ale veď presne to Keeehi-ho riešenie robí. |
||
Kamil Papica Profil * |
#5 · Zasláno: 27. 10. 2015, 12:35:22
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 * |
#6 · Zasláno: 27. 10. 2015, 12:42:18
Kamil Papica:
Ono stačí zadat sprvný čas, tedy 23:59:59 místo 24:00:00 (což už je 1. listopadu). |
||
Časová prodleva: 8 let
|
0