Avatar billede hanstad Nybegynder
01. juli 2001 - 13:46 Der er 16 kommentarer og
1 løsning

sql + mere end 30 dage gammel

Jeg sidder med en asp-side, hvor jeg vil lave et udtræk fra en Accessdatabase. Udtrækket skal kun udtrække records, der er oprettet inden for de sidste 30 dage. Min sql sætning se således ud:

StrSql = \"SELECT * FROM tabel WHERE (dato > \" & date-30 & \");\"

Probelmet er bar, at jeg får alle records ud. Og de som er mere en 30 dage gamle.
Avatar billede hanstad Nybegynder
01. juli 2001 - 13:47 #1
Jeg prøver lige at skrive sidste linie igen:
Problemet er bare, at jeg får alle records ud. Også de som er mere end 30 dage gamle
Avatar billede netsrac Praktikant
01. juli 2001 - 13:50 #2
StrSql = \"SELECT * FROM tabel WHERE (dato > #\" & date-30 & \"#);\"
Avatar billede hanstad Nybegynder
01. juli 2001 - 13:51 #3
Det virker heller ikke
Avatar billede netsrac Praktikant
01. juli 2001 - 13:56 #4
Date - 30 hm...ved ikke lige om man kan bruge negative værdier til dateadd men vi prøver

StrSql = \"SELECT * FROM tabel WHERE (dato > #\" & dateadd(\"d\", -30, date()) & \"#);\"



Avatar billede hanstad Nybegynder
01. juli 2001 - 13:58 #5
når jeg udskriver min sql-sætning til skrmæen får jeg ved date-30 eller #\" & date-30 & \"# samme dato, som er den korrekte dato. Altså datoen for 30 dage siden.
Avatar billede netsrac Praktikant
01. juli 2001 - 14:03 #6
og dato er selvfølgelig et dato felt ikke ?
Avatar billede hanstad Nybegynder
01. juli 2001 - 14:04 #7
jo, kort datoformat = \"01-07-2001\"
Avatar billede netsrac Praktikant
01. juli 2001 - 14:07 #8
hm..så må jeg vist sige pas.
Avatar billede hanstad Nybegynder
01. juli 2001 - 14:08 #9
øv
Avatar billede netsrac Praktikant
01. juli 2001 - 14:11 #10
Hm.. hvis du udskriver den står datoen også i samme format ikke ?

Ved ikke om det vil hjælpe, men prøv at sætte en order by på.

StrSql = \"SELECT * FROM tabel WHERE dato > #\" & date-30 & \"# order by dato\"
Avatar billede torbenkoch Nybegynder
01. juli 2001 - 14:20 #11
Prøv at slå DATEDIFF funktionen op i hjælpen, den vil kunne løse problemet...
Avatar billede hanstad Nybegynder
01. juli 2001 - 14:44 #12
Netsrac: Det virker heller ikke. Men hvorfor skulle det dog også det?

Torbenkoch: Jeg kender godt til datediff, hvad vil du mene at den vil hjælpe?
Avatar billede torbenkoch Nybegynder
01. juli 2001 - 15:06 #13
Du skal lave en where i stil med denne (kan altså ikke huske den præcise syntaks for datediff i Access):

select * from tabel where datediff(\"d\", Now) <= 30

datediff kan jo give dig forskellen på to datoer, f.eks. i dage, hvorfor du nemt kan sammenligne dette antal dage med 30. Now funktionen (som den vist også hedder i Access) returnerer ganske simpelt den aktuelle dato.
Avatar billede hanstad Nybegynder
02. juli 2001 - 11:27 #14
Meget mærkeligt. Jeg har fået det til at virke nu ved at dele Date() op i dag, måned og år og så sammen sat dem igen, således at der står 02/07/01. Min date() funktione skriver 02/07/2001. Det var altså pga. at der stod 2001 og ikke 01, men det burde Access jo selv tage højde for, det gør den f.eks. når man tilføjer nye records, men åbenbart ikke når man skal lave en SQL-sætning, hvor datoen skal indgå i en WHERE.
Jeg siger tak til torbenkoch og netsrac, I får desværre ingen point da I ikke løste mit problem. Jeg går ud fra at det er ok med Jer.
Avatar billede hanstad Nybegynder
08. juli 2001 - 17:12 #15
Spørgsmålet er lukket!
Avatar billede torbenkoch Nybegynder
08. juli 2001 - 21:43 #16
Har nok lidt svært ved at forstå, at mit svar ikke kunne hjælpe dig, men skidt nu med det. Hvis du nu fortæller, hvordan du selv har gjort (vi vil se kode!), så er vi alle(?) nok glade!
Avatar billede hanstad Nybegynder
09. juli 2001 - 08:30 #17
Torbenkoch> Jeg vil med glæde vise dig koden. Det er mærkeligt at datediff ikke virker for jeg plejer ofte selv at benytte detediff med jeg kunne ikke få det til at virke. Mon det har noget at gøre med den server jeg ligger på? Det er svært at sige.

Jeg løste ihvertfald problemet på følgende måde:

dato = date
dag = left(date,2)
md = mid(date,4,2)
aar = right(date,2)
\'Bemærk året fylder kun 2 tegn og ikke 4!

StrSql = \"SELECT * FROM tabel WHERE dato+30 > #\" & md & \"/\" & dag & \"/\" & aar& \"#;\"
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