Avatar billede anderseiler Nybegynder
19. oktober 2005 - 10:08 Der er 21 kommentarer og
1 løsning

datoformatering i sql streng

Hej.

I min access database har jeg en masse poster, og hver af dem har en dato (eks. 19-okt-05).

Så har jeg to felter hvor jeg laver en dato fra, og en dato til. Så skal jeg have lavet en SQL streng, som henter alt fra databasen, hvor dato er mellem felterne $dato_fra og $dato_til.

Nogen som kan hjælpe?

Mvh
Anders
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 10:20 #1
Men det er ikke et datotype-felt? Det er normalt det man anbefaler, når det nu er en dato. Altså: Opbevar det i databasen med den rigtige type, og lav det så evt. om når det skal vises til brugeren, eller hentes fra brugeren.
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 10:23 #2
Ved jeg godt, og jeg har heller intet med databasestrukturen at gøre.. Jeg skal bare have lavet den der mulighed, og aner ikke hvordan når strukturen er som den er?!?
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 10:28 #3
Den står som date/time i databasen.
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 10:39 #4
Hvis det er et datofelt i en Access-db kan du bare sammenligne

  WHERE #01-jan-05#<=datofelt AND datofelt<=#19-okt-05#

eller ved brug af BETWEEN
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 10:51 #5
Sådan som min SQL streng ser ud lige nu, så er det:

T_AuditVisit.AuditDate between #". $dato_fra_real ."# and #". $dato_til_real ."#

Det er så bare lige det snit af det. Der er noget foran og bagved ovenstående. Men hvad er der galt med den? Får flg fejl meddelse:

Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND T_AuditVisit.AuditDate between #22-okt-02# and #06-okt-05#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 115
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 10:56 #6
Det kan jeg ikke lige se. Prøv evt uden between.
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 11:00 #7
Har lavet min streng om til:

#$dato_fra_real#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#

Og får så den her fejl:

Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%prr%' AND #06-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 11:24 #8
Den siger jo: Syntax error in date. Måske fordi der er en sammenblanding af dansk og engelsk.

Men så bruger du bare

WHERE #2005-01-01#<=datofelt AND datofelt<=#2004-10-19#
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 11:50 #9
Ja men indholdet i datofelt er jo ikke 2005-01-01 men 01-jan-05?? Kan jeg så stadig bruge den metode du skriver??
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 11:53 #10
Formentlig - det er Access i en nøddeskal. Den blander præsentation af data med opbevaring, således at det bliver sværere at skrive korrekt, portabel kode. Men det er jo fint nok, hvis en programmør arbejder på timeløn ;)

Så lav lige en test.
Avatar billede anderseiler Nybegynder
19. oktober 2005 - 15:18 #11
Jeg har testet det en million gange, men jeg bliver ved med at få samme fejl??? :S:S

Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression '#15-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#dato_til_real#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109

hjælp?? :P
Avatar billede erikjacobsen Ekspert
19. oktober 2005 - 17:01 #12
#dato_til_real#  er i hvert fald forkert. Men lad mig prøve lidt senere på dagen/døgnet hvis jeg får tid.
Avatar billede anderseiler Nybegynder
20. oktober 2005 - 11:29 #13
Har rettet den dato_til_real, og får en syntax fejl:

Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND #03-okt-02#<=T_AuditVisit.AuditDate AND T_AuditVisit.AuditDate<=#29-okt-05#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 109
Avatar billede anderseiler Nybegynder
20. oktober 2005 - 12:41 #14
Jeg er selv gået lidt videre, og har fået fjernet min syntaxfejl, men har tilgengæld fået en ny fejl :(

Den nye fejl er:
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: No value given for one or more required parameters. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 111

Og den nye SQL er:

... AND T_AuditVisit.AuditDate >= 04-okt-02 AND 15-okt-05 >= T_AuditVisit.AuditDate
Avatar billede erikjacobsen Ekspert
20. oktober 2005 - 13:27 #15
Du kan ikke skrive datoer uden #....# omkring. Eller '....' omkring hvis det er et tekstfelt.

Jeg fik ikke tid igår ;)
Avatar billede anderseiler Nybegynder
20. oktober 2005 - 13:30 #16
sql:
AND T_AuditVisit.AuditDate BETWEEN '03-okt-02' AND '15-okt-05'


Fejl:
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Data type mismatch in criteria expression. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 111

Hvis jeg sætter # omkring får jeg samme syntax fejl som tidligere.....??
Avatar billede erikjacobsen Ekspert
20. oktober 2005 - 14:52 #17
Og hvis der står:

  AND T_AuditVisit.AuditDate BETWEEN #2002-10-03# AND #2005-10-15#


??
Avatar billede anderseiler Nybegynder
20. oktober 2005 - 14:54 #18
Syntax error

Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft JET Database Engine Description: Syntax error in date in query expression 'T_AudititemDefects.Employee like '%%' AND T_AuditVisit.AuditDate BETWEEN #1007334000# AND #1130536800#'. in c:\program files\apache groups\apache\htdocs\lyngsoe\soeg.php on line 88

Har så fundet ud af, at datoen faktisk er et timestamp (access det lort skrev det som det andet. Men det gør vel ingen forskel når begge dele er rettet).
Avatar billede anderseiler Nybegynder
20. oktober 2005 - 15:10 #19
Hvad er der galt med dette stykke SQL?:

T_AuditVisit.AuditDate >= $dato_fra_real AND T_AuditVisit.AuditDate <= $dato_til_real

Det er tilsyneladende det som fejler hver gang. Nu får jeg ikke nogen error, men den henter simpelthen ikke noget ud fra databasen.

Og ja, der er noget i databasen :)
Avatar billede erikjacobsen Ekspert
20. oktober 2005 - 15:24 #20
Jeg kan ikke se nogetsteds om du har testet det jeg nu har foreslået flere gange, senest i dag 14:52:22. Og godt nok kan man sige meget om Access, men jeg vil ikke acceptere det sprogbrug du lægger for dagen her, så jeg hopper ud af spørgsmålet.
Avatar billede anderseiler Nybegynder
10. januar 2006 - 19:31 #21
...
Avatar billede anderseiler Nybegynder
10. januar 2006 - 19:31 #22
... skriv hvis du vil have point :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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