Avatar billede orca Nybegynder
12. marts 2002 - 12:47 Der er 9 kommentarer og
1 løsning

SQL Problemer

Hej alle. Jeg bruger følgende SQL sætning for at udtrække antal poster som er oprettet inden for den sidste uge, og hvor at "Content" er ligmed "tagwall":
"SELECT Count(*) AS Antal FROM tblStats WHERE Content = 'tagwall' AND Created > '" & DateAdd("D", -7, Now()) & "'"

Men det virker ikke :(. Både datoformatet i databasen og på webserveren er engelsk. Hvad gør jeg forkert?

Mvh Mark
--
www.gameshots.dk
Avatar billede coltau Juniormester
12. marts 2002 - 13:02 #1
2 ting kan jeg komme i tanke om.

1. Ændre DateAdd("D", -7, Now()) til: DateAdd("d", -7, Now()) ' Lille d
2. Session.LCID = Engelsk. Må ikke stå til 1030 da DateAdd så returnere i formatet: DD-MM-YYYY
Avatar billede rou Nybegynder
12. marts 2002 - 13:04 #2
Hvis du bruger Access skal du have # omkring datoen..
Hvis det er MSSQL, kan du evt. prøve at tage DATAADD ind i din query, således:

"SELECT Count(*) AS Antal FROM tblStats WHERE Content = 'tagwall' AND Created > DateAdd(d, -7, GETDATE())"

Ellers vil jeg tro du skal checke om du har stavet "tagwall" helt som det du checker imod. Evt. store bogstaver.
Avatar billede orca Nybegynder
12. marts 2002 - 13:04 #3
Dateadd funktionen virker fint nok med et stort D, den har jeg testet. Hvilket nummer skal Session.LCID have hvis det skal være engelsk?

Mvh Mark
--
www.gameshots.dk
Avatar billede orca Nybegynder
12. marts 2002 - 13:05 #4
Rou -> Jeg bruger en MySQL Database :(
Avatar billede coltau Juniormester
12. marts 2002 - 13:06 #5
Hvis du skal anvende LCID = 1030 så kan du prøve dette i stedet for:

function SQLDate(ADate)
  SQLDate = Month(ADate) & "-" & Day(ADate) & "-" & Year(ADate)
end function

SQL = "SELECT Count(*) AS Antal FROM tblStats WHERE Content = 'tagwall' AND Created > '" & SQLDate(DateAdd("d", -7, Now)) & "'"

Anvend SQLDate omkting alle datoer i SQL-sætninger. (Ikke når du anvender RS.AddNew til insert/upadate)
Avatar billede coltau Juniormester
12. marts 2002 - 13:10 #6
Jeg vil anbefale at anvende LCID=1030 og ovenstående funktion. Prøv at læses mine svar på denne: http://www.eksperten.dk/spm/183341
Avatar billede orca Nybegynder
12. marts 2002 - 13:22 #7
coltau -> Jeg prøvede at lave sådan en funktion, men der sker stadig samme fejl/uregelmæssigheder. Det underlige er at den ikke returnerer 0 altid, men forekerte resultater. Hvis jeg f.eks sætter den til at finde alt der er -1 dag gammelt, så finder den et par stykker, men ved -7 dage gammelt finder den ingen, og den bør da finde ihvertfald dem som er -1 dage gammelt...
Avatar billede misbruger Nybegynder
12. marts 2002 - 13:27 #8
du skal bruge Created > '#" & DateAdd("d", -7, Now()) & "'#"
Avatar billede orca Nybegynder
01. maj 2002 - 22:32 #9
Lukker... Fik det ikke til at virke :(
Avatar billede coltau Juniormester
08. maj 2002 - 21:20 #10
Der er kun en måde at få det til at virke på og det er at efterprøve forskellige SQL-sætninger mod DB. Skrevet manuelt:

SQL = "SELECT Count(*) AS Antal FROM tblStats WHERE Content = 'tagwall' AND Created > '12/02/2002'"

Prøve sig frem med forskellige datoformater indtil man ved hvilket format der skal bruges. Derefter kan man sikre konstruere nedenstående funktion i henhold til det korrekte format:

function SQLDate(ADate)
  SQLDate = Month(ADate) & "-" & Day(ADate) & "-" & Year(ADate)
end function
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