19. januar 2005 - 14:44Der er
16 kommentarer og 1 løsning
Check om dato-interval overlapper!
Jeg har en database med en masse aftaler, bestående af datostart og datoslut felter.
Nu vil jeg skrive en tidslinje ud, som for hvert løkke-gennemløb har variablerne $datostart2 og $datoslut2.
Det jeg nu gerne vil finde ud af, er for hvert gennemløb om der findes en aftale til dette tidspunkt. Dette inkludere hvis en aftale på nogen måde overlapper løkke-gennemløbet.
Nogen idéer? Synes selv jeg har stirret mig blind på problemet, og synes der er utrolig mange forhold at tage hensyn til.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
... where ((($datoStart between dato_start and dato_slut) and ($datoSlut between dato_start and dato_slut)) or (($datoStart <= dato_start) and ($datoSlut >= dato_slut)) or (($datoStart <= dato_start) and ($datoSlut between dato_start and dato_slut)) or (($datoSlut <= dato_slut) and ($datoStart between dato_start and dato_slut)))
Jeg tror jeg har forklaret problemet med overlapninger forkert. Det jeg mener med overlapninger er ikke at der er to aftaler i DB'en som overlapper, men derimod at en aftale kan overlappe tidsinvervalerne i min løkke.
F.eks. hvis min løkke hopper med et kvarters mellemrum fra kl. 10:00 til 16:00, altså:
? Håber det giver lidt mere idé om mit problem. Hvordan jeg løber løkken igennem og udskriver data hvis der er aftale er ligemeget. Det er bare mit mysql-kald som skal returnere aftalen, hvis den forefindes i $datoStart og $datoSlut :-)
De har datetime, men jeg kan sagtens sammenligne datotyperne, det er ikke problemet. Men med dit forslag, vil den ikke spytte nogen række ud, hvis f.eks. $datoStart er ikke ligger imellem dato_start og dato_slut men $datoSlut gør.
where ($datoStart between dato_start and dato_slut) or ($datoSlut between dato_start and dato_slut) or ($datostart < datostart and $datoslut > datoslut)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.