Kazalci
tukaj lahko izberete kaj točno bi radi bralivse (103)
stran (7)
zajeban vsakdanjik (27)
internet (5)
prijeten vsakdanjik (30)
znanost (8)
žuri (9)
geek (8)
znanstvena fantastika (1)
Programiranje (4)
Filmi (2)
Psyg bug
kako je bil odpravljenNa strani delostejem.psywerx.net sem par dni nazaj odstranjeval hrošča, ki ga je odkril Psyg. Gre pa za sledečo zadevo:
V bazo se vnaša začetna in končna ura dela, ki predstavlja časovni interval dela na določen datum. Recimo, da je Franci 26.10.2009 prišel v službo ob 9:00 in šel domov ob 17:00. V bazo se torej zapišejo datum, ura prihoda in ura odhoda. Franci vnese datum in čase v aplikacijo in tu se za večino ljudi stvar zaključi. V času od 9:00 do 17:00 torej Franci dela v službi in ne more opravljati nobenega drugega dela. Ampak kako to na preprost način spraviti v aplikacijo?
Jaz sem si pomagal s to visokokvalitetno skico:

Pofarban pravokotnik predstavlja Francijev delovni čas, vsi osali pravokotniki pa predstavljajo skoraj vse možne kombinacije vnosa časa, ki pridejo v poštev. Mislim, da manjka edino primer, ko sta vhodni in odhodni čas znotraj že vnešenega intervala.
Sprva sem bil prepričan, da se problem da rešit na preprost način z dvema primerjanjema, vendar se je kasneje izkazalo, da temu (vsaj po mojih izkušnjah) ni tako.
WHERE start_time <= 'form_end_time' AND start_time >= 'form_start_time'
OR end_time >= 'form_start_time' AND end_time <= 'form_end_time'
Tole je magični del, kode, ki mi je vzel še največ časa pri tem problemu. Kaj točno dela? No ta del, kode se nahaja znotraj SELECT stavka in izbere tiste vrstice, ki se nahajajo znotraj vnešenega intervala (od form_start_time do form_end_time). Če najde več kot nobeno vrstico vrže Exception, drugače pa zapiše želeni interval v bazo.
To je moja rešitev, tega problema. Bi kdo znal spisat bolj elegantno rešitev?
Objavljeno na 26. vinotok 2009 ob 18:04Komentarji:
mš pravi: sigurn bi se dal bl elegantn = lepš tole na papirčk napisat
psyg pravi:
a to si nek pinball igra al kajl?
psyg pravi:
igral*

