02. marts 2007 - 10:25Der er
8 kommentarer og 1 løsning
sql dato problem
Hej
Jeg har følgende sql-statement som jeg sender til en forespørgsel:
SELECT SERVER,DATE1 AS DATO,FORBRUGDB.IPADRESSE,NAVN, Count(FORBRUGDB.IPADRESSE) AS ANTAL FROM IPADRESSE_NAVN RIGHT JOIN FORBRUGDB ON IPADRESSE_NAVN.IPADRESSE = FORBRUGDB.IPADRESSE WHERE DATE1 >= #27-02-2007# AND DATE1 <= #01-03-2007# GROUP BY SERVER,DATE1,FORBRUGDB.IPADRESSE,NAVN
problemmet er at forespørgslen "vender" #01-03-2007# til at være #03-01-2007#, men #27-02-2007# behandles korrekt????
Er der en af Jer der har en erfaring omkring mit problem?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
SELECT SERVER,DATE1 AS DATO,FORBRUGDB.IPADRESSE,NAVN, Count(FORBRUGDB.IPADRESSE) AS ANTAL FROM IPADRESSE_NAVN RIGHT JOIN FORBRUGDB ON IPADRESSE_NAVN.IPADRESSE = FORBRUGDB.IPADRESSE WHERE DATE1 >= Format (#27-02-2007#, "dd/mm/yyyy") AND DATE1 <= Format (#01-03-2007#, "dd/mm/yyyy") GROUP BY SERVER,DATE1,FORBRUGDB.IPADRESSE,NAVN
eller
SELECT SERVER,DATE1 AS DATO,FORBRUGDB.IPADRESSE,NAVN, Count(FORBRUGDB.IPADRESSE) AS ANTAL FROM IPADRESSE_NAVN RIGHT JOIN FORBRUGDB ON IPADRESSE_NAVN.IPADRESSE = FORBRUGDB.IPADRESSE WHERE DATE1 >= Format (#27-02-2007#, 'dd/mm/yyyy') AND DATE1 <= Format (#01-03-2007#, 'dd/mm/yyyy') GROUP BY SERVER,DATE1,FORBRUGDB.IPADRESSE,NAVN
ps. du kan sikkert også udskifte / mellem dd/mm/yyyy til - hvis det er
Min sql ser sådan ud: SELECT SERVER,DATE1 AS DATO,FORBRUGDB.IPADRESSE,NAVN, Count(FORBRUGDB.IPADRESSE) AS ANTAL FROM IPADRESSE_NAVN RIGHT JOIN FORBRUGDB ON IPADRESSE_NAVN.IPADRESSE = FORBRUGDB.IPADRESSE WHERE DATE1 >= Format (#27-02-2007#, 'dd/mm/yyyy') AND DATE1 <= Format (#01-03-2007#, 'dd/mm/yyyy') GROUP BY SERVER,DATE1,FORBRUGDB.IPADRESSE,NAVN
men ser stadig sådan ud i kriterie cellen i design wiev selvom jeg putter format på:
=Format(#27-02-2007#;'dd-mm-yyyy') And <=Format(#03-01-2007#;'dd-mm-yyyy')
Normalt, når man angiver en dato direkte i SQL, er det i amerikansk format, altså mm/dd/yy:
3. april 2005 = #04/03/2005#
Det er som det ser ud i SQL visning.
I design view, bliver det ændret iht. systemopsætningen (dansk standardopsætning dd-mm-åååå): #03-04-2005#
Men Access forsøger at være "smart", så hvis man angiver en måned, som er større end 12, vil den antage at den skal gøre det omvendt (den ændrer det bare, uden at melde en fejl). Det bedste er altså at være konsekvent og i SQL at anvende det amerikanske format. Somme tider er "intelligens" en svøbe...
Jeg kan ikke ændre i database designet vedrørende andet datoformat så .. Jeg løste problemmet på denne (ikke særlig elegante) måde men det virker :-) Jeg kunne ikke få vendt datoen ved hjælp af format() eller format$() jeg har prøvet på alle mulige og umulige måder :-(
If Day(Forms!rapporter!TilDato) < Month(Forms!rapporter!TilDato) Then
Jeg har ikke haft tid til at prøve dit forslag, men din forklaring var god og hjalp mig til en løsning. Så smid et svar og få dine velfortjente point. Jeg skal nok give et praj hvis/når jeg får tid til at prøve dit sidste forslag af.
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.