10. september 2007 - 20:28Der 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
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'
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'
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.
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:)
Synes godt om
Ny brugerNybegynder
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.