|
| SQL2 og overlap..? Fra : Thomas Sørensen |
Dato : 15-02-04 22:23 |
|
Jeg har et kontkret problem med udviklingen af en stored procedure i MS SQL
Server 2000. Jeg skal bruge en funktion, som kan returnere "overlaptiden" af
to tidsintervaller der overlapper hinanden. Efter at have kæmpet med opgaven
igennem længere tid, fandt jeg ud af (via søgen på www) at SQL2-standarden
understøtter dette med en "OVERLAPS"-operator.
Uden at vide noget som helst om SQL2, er mit spørgsmål nu, om SQL Server
2000 kan bringes til, at understøtte denne udvidede standard og i givet
fald, hvordan?
Håber nogen kan hjælpe mig...
På forhånd tak
Thomas Hvalsø Sørensen
t.s@tele2adsl.dk
| |
Jens Gyldenkærne Cla~ (15-02-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 15-02-04 23:10 |
| | |
Thomas Sørensen (16-02-2004)
| Kommentar Fra : Thomas Sørensen |
Dato : 16-02-04 22:03 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns9490EB9CFC9B3jcdmfdk@gyrosmod.cybercity.dk...
> Thomas Sørensen skrev:
>
> > SQL2-standarden understøtter dette med en "OVERLAPS"-operator.
>
> - men den er så vidt jeg kan se ikke implementeret i MSSQL 2000.
>
> > Uden at vide noget som helst om SQL2, er mit spørgsmål nu, om
> > SQL Server 2000 kan bringes til, at understøtte denne udvidede
> > standard og i givet fald, hvordan?
>
> Hvis en database ikke understøtter en given kommando, er du nødt
> til at bruge andre metoder.
>
> Jeg fandt følgende via Google:
>
< http://groups.google.dk/groups?hl=da&lr=&ie=UTF-8&oe=utf-8&threadm=1ea061c6
..0305300519.70c8eaf3%40posting.google.com&rnum=3&prev=/groups%3Fq%3Dsql%2Bov
erlaps%2Bserver%26hl%3Dda%26lr%3D%26ie%3DUTF-8%26oe%3Dutf-8%26selm%3D1ea061c
6.0305300519.70c8eaf3%2540posting.google.com%26rnum%3D3>
>
> Det ser ud til at virke.
Jeg takker for hjælpen, men jeg tror at Kristian Damm Jensens ide rammer
bedre plet i min applikation...
/Thomas
> --
> Jens Gyldenkærne Clausen
> »Diplomatiet består netop i, at de gamle kommatister kan få lov til
> at tro, at de har vundet. Men i virkeligheden har de tabt.«
> Ole Togeby i Information
| |
Kristian Damm Jensen (16-02-2004)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 16-02-04 08:22 |
|
Thomas Sørensen wrote:
> Jeg har et kontkret problem med udviklingen af en stored procedure i
> MS SQL Server 2000. Jeg skal bruge en funktion, som kan returnere
> "overlaptiden" af to tidsintervaller der overlapper hinanden. Efter
> at have kæmpet med opgaven igennem længere tid, fandt jeg ud af (via
> søgen på www) at SQL2-standarden understøtter dette med en
> "OVERLAPS"-operator.
>
> Uden at vide noget som helst om SQL2, er mit spørgsmål nu, om SQL
> Server 2000 kan bringes til, at understøtte denne udvidede standard
> og i givet fald, hvordan?
Som Jens skriver: Nix.
> Håber nogen kan hjælpe mig...
Jeg kan ikke helt gennemskue om det link Jens angiver, kan bruges til dit
problem. her er mit forslag.
Først lidt afklaring: Du har to tidsintervaller og søger længden af det
tidsinterval, der udgør overlappet mellem de to. Altså ikke *om* de
overlapper (hvilket er nemt nok), men længden af deres overlap. Korrekt?
Når du har to intervaller, har du (op til) 4 tidspunkter. Hvis disse sættes
op på en tidslinie, vil der opstå 3 intervaller (og to uendelige
endestykker). Længden af netop ét af disse intervaller, er det du søger.
Algoritme:
Du har to intervaller A og B.
1. Læg de fire intervalendepunkter i en temporær tabel.Fjern dubletter.
2..For hvert tidspunkt, find det næstfølgende på tidslinien. Det giver
naturligvis ikke mening for det sidste tidspunkt, men vi kan evt. forsimple
beregningen ved at bruge d. 31/12 9999 som endepunkt for tidslinien.
3. Fjern evt. det sidste interval, det med 31/12 9999.
4. Du har nu mellem 1 og 4 intervaller (afhængig af om du gennemførte punkt
3). Ffor hvert interval undersøger du om det overlapper med hhv. A og B.
Hvis det overlapper med dem begge, er det netop dette interval du er
interesseret i.
Tilføj nogle nøgler, og det skulle være muligt at generalisere dette til
mængdeoperationer.
--
Kristian Damm Jensen damm (at) ofir (dot) dk
No man is an island. So is Man.
| |
Thomas Sørensen (16-02-2004)
| Kommentar Fra : Thomas Sørensen |
Dato : 16-02-04 22:02 |
|
"Kristian Damm Jensen" <REdammMOVE@ofir.dk> skrev i en meddelelse
news:c0pral$19l2oc$1@ID-146708.news.uni-berlin.de...
> Thomas Sørensen wrote:
> > Jeg har et kontkret problem med udviklingen af en stored procedure i
> > MS SQL Server 2000. Jeg skal bruge en funktion, som kan returnere
> > "overlaptiden" af to tidsintervaller der overlapper hinanden. Efter
> > at have kæmpet med opgaven igennem længere tid, fandt jeg ud af (via
> > søgen på www) at SQL2-standarden understøtter dette med en
> > "OVERLAPS"-operator.
> >
> > Uden at vide noget som helst om SQL2, er mit spørgsmål nu, om SQL
> > Server 2000 kan bringes til, at understøtte denne udvidede standard
> > og i givet fald, hvordan?
>
> Som Jens skriver: Nix.
>
> > Håber nogen kan hjælpe mig...
>
> Jeg kan ikke helt gennemskue om det link Jens angiver, kan bruges til dit
> problem. her er mit forslag.
>
> Først lidt afklaring: Du har to tidsintervaller og søger længden af det
> tidsinterval, der udgør overlappet mellem de to. Altså ikke *om* de
> overlapper (hvilket er nemt nok), men længden af deres overlap. Korrekt?
>
> Når du har to intervaller, har du (op til) 4 tidspunkter. Hvis disse
sættes
> op på en tidslinie, vil der opstå 3 intervaller (og to uendelige
> endestykker). Længden af netop ét af disse intervaller, er det du søger.
>
> Algoritme:
>
> Du har to intervaller A og B.
>
> 1. Læg de fire intervalendepunkter i en temporær tabel.Fjern dubletter.
>
> 2..For hvert tidspunkt, find det næstfølgende på tidslinien. Det giver
> naturligvis ikke mening for det sidste tidspunkt, men vi kan evt.
forsimple
> beregningen ved at bruge d. 31/12 9999 som endepunkt for tidslinien.
>
> 3. Fjern evt. det sidste interval, det med 31/12 9999.
>
> 4. Du har nu mellem 1 og 4 intervaller (afhængig af om du gennemførte
punkt
> 3). Ffor hvert interval undersøger du om det overlapper med hhv. A og B.
> Hvis det overlapper med dem begge, er det netop dette interval du er
> interesseret i.
>
> Tilføj nogle nøgler, og det skulle være muligt at generalisere dette til
> mængdeoperationer.
Jeg takker for hjælpen og arbejder videre med det...
/Thomas
>
> --
> Kristian Damm Jensen damm (at) ofir (dot) dk
> No man is an island. So is Man.
>
| |
|
|