Avatar billede hostgirl Nybegynder
10. september 2007 - 20:28 Der er 4 kommentarer og
2 løsninger

Problemer med SQL-stament, select from

Hej

Jeg har et problem, som jeg ikke helt forstår.

Min sql-stament:

SELECT * FROM Sessions WHERE ([Start] >= #12-09-2007 09:30:00# AND [Start] < #12-09-2007 11:00:00#) OR ([End] > #12-09-2007 09:30:00# AND [End] <= #12-09-2007 11:00:00#) AND IsDeleted=False AND TeamId='2'

Udkast af min tabel:

ID    TeamID    Start                End       
129    2    12-09-2007 09:30:00  12-09-2007 11:00:00   
130    2    12-09-2007 10:00:00  12-09-2007 11:30:00


Problemet er, at den ovenstående SQL-stament ikke finder noget i tabellen, med de kriterier jeg har angivet. Hvad gør jeg forkert, for den skulle gerne finde disse to records.

Kort om sql-stamenten, så er formålet at tjekke om en tid er booket, dvs tiderne må ikke overlappe hinanden, dog må en starttid godt være det samme tidspunkt som en slut tid. fx

ID    TeamID    Start                End       
131    2    12-09-2007 09:30:00  12-09-2007 11:00:00   
132    2    12-09-2007 11:00:00  12-09-2007 11:30:00

men ikke som i først udkast fra tabellen.

Håber nogen kan hjælpe, eller hvis i har spørgsmål er i velkommen til at spørge selvfølgelig
Avatar billede nielle Nybegynder
10. september 2007 - 20:32 #1
Jeg gætter på at du mangler en parentes:

SELECT * FROM Sessions WHERE ([Start] >= #12-09-2007 09:30:00# AND [Start] < #12-09-2007 11:00:00#) OR ([End] > #12-09-2007 09:30:00# AND [End] <= #12-09-2007 11:00:00#) AND IsDeleted=False AND TeamId='2'

ændres til:

SELECT * FROM Sessions WHERE (([Start] >= #12-09-2007 09:30:00# AND [Start] < #12-09-2007 11:00:00#) OR ([End] > #12-09-2007 09:30:00# AND [End] <= #12-09-2007 11:00:00#)) AND IsDeleted=False AND TeamId='2'
Avatar billede neoman Novice
10. september 2007 - 20:32 #2
Prøv
SELECT * FROM Sessions WHERE ([Start] >= #12-Sep-2007 09:30:00# AND [Start] < #12-Sep-2007 11:00:00#) OR ([End] > #12-Sep-2007 09:30:00# AND [End] <= #12-Sep-2007 11:00:00#) AND IsDeleted=False AND TeamId='2'
Avatar billede neoman Novice
10. september 2007 - 20:33 #3
Jeg tror det er det sædvanlige Access datobøvl:)
Avatar billede hostgirl Nybegynder
10. september 2007 - 20:57 #4
neoman du havde helt ret, oprettede en funktion der erstattede alle 01,02,03... 12, med de 3 første char i månedsnavnet, hvilket hjalp på situationen. Desuden skulle de ekstra () som nielle havde sat også til. Så hvis i begge vil smide et svar, takker jeg for de meget hurtige svar.
Avatar billede nielle Nybegynder
10. september 2007 - 20:59 #5
Giv bare de fleste point til neoman.

Svar :^)
Avatar billede neoman Novice
10. september 2007 - 21:04 #6
OK - årsagen til miseren er at Access internt håndterer datoer på det amerikanske format MM-dd-yyyy. Det, at du SER noget andet, afhænger blot af din locale setting. Det øjeblik du konverterer en dato til en string representation, så er resultatet bestemt af din locale. Men, 12-9 er for dig 12 september, mens for Access er det den 9 december.

Det øjeblik at man skriver datoen  som 12-Sep, så er tvetydigheden fjernet, og Access kan finde ud af hvad du mener.)

Hvis du skal fodre Access med datore i string format, så kan du gøre som du har gjort, og angive månedsnavnet, eller, alternativt, fodre den med 9-12-2007, som værende 12. september:)
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
Kurser inden for grundlæggende programmering

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