| | |
| Stránka: 1 z 1
| [ Príspevkov: 23 ] | |
Autor | Správa |
---|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 |
Ahojte.
Neviem si stale nejak poradit s vyberom pre "tento tyzden" a pre "nasledujuci tyzden"...
Neviete mi poradit ako nato?
datum mam ulozeny v datetime...
a ide o sltpce "den_od" a "den_do"
Dakujem
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 24.11.2010 22:34 | |
|
_________________ Sorry za prelkepy |
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 24.11.2010 22:57 | |
|
skor som mal namysli priamo to robit v selecte... zacal som takto:
Kód: SELECT ..., DATE_FORMAT(den_od, '%e.%m.%Y o %k:%i') AS den_od, DATE_FORMAT(den_do, '%e.%m.%Y o %k:%i') AS den_do, ... WHERE den_do >= NOW() AND den_do >= DATE_FORMAT(DATE_ADD(curdate(), INTERVAL(2-DAYOFWEEK(curdate())) DAY))
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 25.11.2010 8:07 | |
|
definuj "tento tyzden: ak urobis dotaz v utorok tak chces mat data aj za pondelok ?
|
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 25.11.2010 8:57 | |
|
to co bude lahsie... ak bude utorok moze tam byt aj pondelok... ale nemusi radsej by tam nemal byt...
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 25.11.2010 10:26 | |
|
takze prvu podmienku mas zle lebo mas asi preklep a spravne by si mal testovat stlpec "den_od"
Kód: den_od >= NOW() no druha ma zase nespravne porovnavacie znamienko lebo den_do by mal byt mensi popripade rovny zadanemu hornemu datumu Kód: AND den_do < NOW()+14
samozrejme NOW()+14 iba orientacne vyjadruje horny datum
ale s jeho vypoctom ti nepomozem, mysql ani php moc neovladam
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
pre tento tyzden bude zrejme stacit podmienka (aj keby bolo lepsie nemat na lavej strane ziadnu funkciu):
Kód: WEEK(date_od) = WEEK(CURDATE())
neviem totiz, co presne pre teba znamenaju stlpce date_od a date_do
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 25.11.2010 12:04 | |
|
vo vlaku to otestujem... a dam vediet...
pre mna znamena tlpec "den_od" zaciatok akcie a "den_do" koniec akcie.... chce robit filtre vypisu...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
na zaklade ktoreho udaju sa treba rozhodnut, ci sa dany zaznam zahrnie do "tohto tyzdna"?
Mas napr. 4 zaznamy:
od: 19.11.2010, do: 23.11.2010
od: 20.11.2010, do: 29.11.2010
od: 25.11.2010, do: 26.11.2010
od: 28.11.2010, do: 30.11.2010
Ktore z nich sa maju vybrat?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 25.11.2010 12:20 | |
|
najlepsie by to bolo keby iba tie ktore su dnes a tento tyzden.. cize do nedele.... 2-4 zaznam z tvojho prikladu... 4. preto lebo 28.11. je nedela....
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 25.11.2010 12:23 | |
|
miro-boss píše: vo vlaku to otestujem... a dam vediet...
pre mna znamena tlpec "den_od" zaciatok akcie a "den_do" koniec akcie.... chce robit filtre vypisu...
aha tak to potom opacne, priblizne nejak tako , len upravit logiku now()+14 na vypocitanie najblizsieho pondelka po now()+7
Kód: where date_od < now()+14 and date_do > now()
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
miro-boss píše: najlepsie by to bolo keby iba tie ktore su dnes a tento tyzden.. cize do nedele.... 2-4 zaznam z tvojho prikladu... 4. preto lebo 28.11. je nedela....
aby si ma chapal, dolezite je stanovit jednoznacne kriterium, na zaklade ktoreho sa budu dat bez problemov vyselektovat potrebne zaznamy.
Nakolko si zvolil 2-4, tak tam nevidim ziadny jednoduchy kluc, na zaklade ktoreho sa to ma vyberat, kedze nerozhoduje ani to, ze:
- musi mat zaciatok tento tyzden (zvolil si aj 2. zaznam)
- musi koncit tento tyzden (zvolil si aj 2. a 4. zaznam)
- musi zasahovat do tohto tyzdna (nezvolil si 1. zaznam)
Ake su potom tvoje kriteria?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 25.11.2010 15:30 | |
|
stenley v prvom rade ti chcem podakovat, ze sa zaoberas mojim problemom a to velmi profesionalne.... vazim si to!
- podujatie musi zacinat tento tyzden
- zobrazovat iba tie co v dany den + donca tyzdna prebiehaju alebo zacinaju (ak je utorok tak vsetky co zacinaju od utorka do nedele)
myslim, ze to staci
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 25.11.2010 15:46 | |
|
myslel som ze by to slo takto
tento tyzden
Kód: SELECT * FROM tabulka WHERE WEEK(date_od) = WEEK(CURDATE()) OR WEEK(date_do) = WEEK(CURDATE()); nasledujuci tyzden Kód: SELECT * FROM tabulka WHERE WEEK(date_od) = WEEK(CURDATE())+1 OR WEEK(date_do) = WEEK(CURDATE())+1;
ak tam mas vela zaznamov, a slo by to pomaly, mozno by som volil taky psosob, ze budes ukladat aj tyzden kedy sa udalost odohrava. a bdues uz jednoducho porovnavat s aktualnym.. WEEK(CURDATE()) alebo php func. date('W')
_________________ Sorry za prelkepy |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 25.11.2010 20:44 | |
|
chalani, neviem neviem, week() vrati poradove cislo tyzdna v ramci jedneho roka, cize Kód: SELECT * FROM tabulka WHERE WEEK(date_od) = WEEK(CURDATE()) moze vratit aj zaznamy aj z predchadzajucich rokov, takze ak ma v tabulke alebo aspon bude mat data za viac rokov tak ten select bude vracat aj nespravne udaje .
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 25.11.2010 20:46 | |
|
ok, tak
Kód: SELECT * FROM tabulka WHERE WEEK(date_od) = WEEK(CURDATE()) AND YEAR(date_od) = YEAR(CURDATE())
_________________ Sorry za prelkepy |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
coldak píše: chalani, neviem neviem, week() vrati poradove cislo tyzdna v ramci jedneho roka, cize Kód: SELECT * FROM tabulka WHERE WEEK(date_od) = WEEK(CURDATE()) moze vratit aj zaznamy aj z predchadzajucich rokov, takze ak ma v tabulke alebo aspon bude mat data za viac rokov tak ten select bude vracat aj nespravne udaje . no jasne, na to som uplne zabudol, v tom pripade staci namiesto WEEK pouzit YEARWEEK aj s nastavenim druheho parametra miro-boss píše: - podujatie musi zacinat tento tyzden - zobrazovat iba tie co v dany den + donca tyzdna prebiehaju alebo zacinaju (ak je utorok tak vsetky co zacinaju od utorka do nedele) + dalsia podmienka kontrolujuca datum zaciatku, aby sa zobrazovali len tie zaznamy, ktore sa maju zacat tento tyzden a sucasne ich zaciatok nie je skorsieho datumu ako aktualny den Cize by to mohlo vypadat takto: Kód: SELECT * FROM tabulka WHERE date_od >= CURDATE() AND YEARWEEK(date_od, 1) = YEARWEEK(CURDATE(), 1) alebo este ina verzia: Kód: SELECT * FROM tabulka WHERE date_od >= (CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY) AND date_od < (CURDATE() + INTERVAL (7 - WEEKDAY(CURDATE())) DAY)
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 26.11.2010 10:02 | |
|
emer dakujem.. funguje to
coldak nestaci to poriesit este jednou podmienkou? napr
SELECT * FROM tabulka WHERE (WEEK(date_od) = WEEK(CURDATE()) OR WEEK(date_do) = WEEK(CURDATE()) AND den_od LIKE 'aktualny_rok-%%-%% %%:%%:%%' AND den_do LIKE 'aktualny_rok-%%-%% %%:%%:%%'); ???
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 26.11.2010 10:34 | |
|
miro-boss píše: emer dakujem.. funguje to coldak nestaci to poriesit este jednou podmienkou? napr SELECT * FROM tabulka WHERE (WEEK(date_od) = WEEK(CURDATE()) OR WEEK(date_do) = WEEK(CURDATE()) AND den_od LIKE 'aktualny_rok-%%-%% %%:%%:%%' AND den_do LIKE 'aktualny_rok-%%-%% %%:%%:%%'); ???
uz s principu zbytocne pouzivanie funkcie nad stlpcom tabulky je nevhodne. nie som si isty ale myslim ze mysql nepodporuje function based indexy takze ak mas index nad stlpcom date_do a ty v podmienke pouzijes WEEK(date_do) tak stratis moznost rychleho indexovaneho vyhladavania. tvrdis ze tvoja tabulka je dost velka takze index je tam asi dost potrebny. dobre riesenie je to od stanleyho ta druha verzia. aj ked neviem ci pre tvoju potrebu su spravne zadefinovane rozsahy, ale princip je spravny.
|
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 26.11.2010 12:40 | |
|
dakujem chalani.. tak teda asi pouzijem Kód: SELECT * FROM tabulka WHERE date_od >= (CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY) AND date_od < (CURDATE() + INTERVAL (7 - WEEKDAY(CURDATE())) DAY)
tvari sa to, ze to funguje ako ma... tak som spokojny...
Dakujem pekne este raz
|
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 01.01.2011 23:07 | |
|
narazil som na jeden problem...
pouzivam toto:
Kód: SELECT * FROM tabulka WHERE date_od >= (CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY) AND date_od < (CURDATE() + INTERVAL (7 - WEEKDAY(CURDATE())) DAY)
je to sice dobre.. ale narazil som na jeden detail...
potreboval by som ked je nejake podujatie od napr 01.10.2011 do 21.10.11 a je 8.10.2011...
a ja si vyberiem, ze mi to ma vypisat podujatia, ktore su tento tyzden.. tak sa uz toto do podmienky nezmesti lebo datum skoncenia je 21.10.2011 a to ziadno nespravim ked ono berie, ze koncit musi do menej ako dnesny + pocet dni do konca tyzdna...
neviete mi s tymto pomoct? neviem, ze ci som to spravne vysvetlil...
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 03.01.2011 13:09 | |
|
podujatie ktore trva 21 dni?
zaujimalo by ma jak chces kontolovat ze nejake trva viac nez jeden den ked tam mas len entitu date_od a date_do si nejak vypustil
|
|
Registrovaný: 08.04.08 Prihlásený: 04.08.14 Príspevky: 40 Témy: 8 | Napísal autor témy miro-boss: 03.01.2011 13:17 | |
|
tak su take.. naprikad vystavy... ale vcera som to riesil vecer.... a vyriesil som.. dufam, ze spravne zatial to podla dat v db funguje spravne...
|
|
| Stránka: 1 z 1
| [ Príspevkov: 23 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|