Avatar billede cthrane Praktikant
05. december 2006 - 19:33 Der er 1 kommentar

datochek i booking system - lovligt tidsinterval

Kære eksperter
Jeg skal lave et bookingsystem, og start- og slut-tid-dato for en booking skal ligge udenfor alle andre start- & slut-tider.
Hvordan chekker jeg det med SQL?

Eksempel:
Bookning af delebil

Tabel BOOK{
  id:int;
  Start:datetime;
  Slut:datetime;
  Ejer:varchar(50);
  Tekst:text;
}

Delebilen er booket:
20. januar 2007 kl 8.00 til 22. januar 2007 kl. 18.00 af CT
03. februar 2007 kl 8.00 til 10. februar 2007 kl. 18.00 af AD
12. februar 2007 kl 8.00 til 15. februar 2007 kl 20.00 af ST

Kan Viggo booke bilen fra 24. januar 2007 kl. 7.00 til 1. februar 2007 kl. 12.00 ?

Hvordan udtrykker jeg det i SQL med en selectsætning?

vh Carsten
Avatar billede mbagge Nybegynder
07. december 2006 - 09:53 #1
Du skal lave en select i stil med dette pseudo kode:

select id from book where
(start < viggo_start AND slut > viggo_start) OR
(start > viggo_start AND slut < viggo_slut) OR
(start < viggo_slut AND slut > viggo_slut)

Del 1 returnere de eksisterende events som starter før viggos start, men ender senere (fx viggo 10-16 og eksisterenden 8-12)
Del 2 returnere dem der starter senere end viggos start, og ender tidligere end hans sluttid. (fx viggo 08-16, og en anden booking 10-12)
Del 3 er identisk med 1, blot i slutningen af fasen (fx viggo 8-12 og eksisterende 10-16)

/Bagge
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester