Avatar billede para7 Nybegynder
05. maj 2010 - 23:51 Der er 13 kommentarer og
1 løsning

Hente sidste 7 dages poster

Jeg vil gerne hente de sidste 7 dages poster ud af databasen. Jeg bruger ASP, men det er vel samme princip for php og asp.

Jeg har prøvet med følgende, men kan ikke blive klog på det eller få det til at virke. Henter intet frem:

strSQL = strSQL & "AND clipDato BETWEEN DATE_SUB(now(), INTERVAL 7 DAY) AND now() "

Denne gør ingen forskel:
strSQL = strSQL & "AND DATE_ADD(clipDato, INTERVAL 7 DAY) > Now() "

Det burde da være simpelt?
Avatar billede showsource Seniormester
06. maj 2010 - 00:00 #1
nånånå, to spm om det samme !
Det må man jo ikke !!!
Avatar billede janus_007 Nybegynder
06. maj 2010 - 00:01 #2
strSQL = strSQL & "AND DATE_ADD(Now(), INTERVAL -7 DAY) > Now() "
Avatar billede showsource Seniormester
06. maj 2010 - 00:19 #3
strSQL = strSQL & "AND clipDato >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)"
Avatar billede para7 Nybegynder
06. maj 2010 - 07:52 #4
Janus:
Der vises ingen poster med dit eksempel...
Avatar billede para7 Nybegynder
06. maj 2010 - 08:46 #5
clipDate er af typen varchar.
Avatar billede janus_007 Nybegynder
06. maj 2010 - 12:44 #6
Jamen så er det jo derfor :)

Du skal konvertere den til en date:

Jeg tager showsources statement og kombinere her:
strSQL = strSQL & "AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)"

EUR eller USA
Avatar billede para7 Nybegynder
06. maj 2010 - 13:37 #7
Nice try, tak. det nærmer sig... Jeg har erstattet curdate() med date(), da det er asp koder.

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.9-gamma-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(DATE,'EUR')) >= DATE_SUB(date(), INTERVAL 7 DAY)' at line 1

Min sql sætning udskrevet:
SELECT * FROM clip WHERE clipAktivt = 1 AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB(date(), INTERVAL 7 DAY)
Avatar billede para7 Nybegynder
06. maj 2010 - 13:45 #8
Det her, jeg har fundet frem til virker, men er ikke specielt elegant:

strSQL = strSQL & "AND (clipDato = '" & DateAdd("d",date(),-8) & "' OR clipDato = '" & DateAdd("d",date(),-7) & "' OR clipDato = '" & DateAdd("d",date(),-6) & "' OR clipDato = '" & DateAdd("d",date(),-5) & "' OR clipDato = '" & DateAdd("d",date(),-4) & "' OR clipDato = '" & DateAdd("d",date(),-3) & "' OR clipDato = '" & DateAdd("d",date(),-2) & "' OR clipDato = '" & DateAdd("d",date(),-1) & "') "
Avatar billede janus_007 Nybegynder
06. maj 2010 - 14:32 #9
Du kan ikke bruge Date på den måde, du bruger en ASP-metode og smider den videre ned til MySql, det dur ikke. Du bliver nødt til enten at oversætte Date til en dags dato igennem ASP eller bruge current date på MySql'en.

Jeg ville gerne du bare kørte det som jeg skrev:

"Nice try, tak. det nærmer sig... Jeg har erstattet curdate() med date(), da det er asp koder.

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.9-gamma-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(DATE,'EUR')) >= DATE_SUB(date(), INTERVAL 7 DAY)' at line 1 "

- Altså ingen ændringer fra CurDate til Date(), prøv lige det først!
Avatar billede para7 Nybegynder
06. maj 2010 - 14:43 #10
Tak igen. Men det var også hvad jeg først prøvede, copy paste, og har nu prøvet en ekstra gang. Samme syntax fejlmeddelelse om det er curdate() eller date()
Avatar billede janus_007 Nybegynder
07. maj 2010 - 20:58 #11
Prøv at hardcode datoen så og se om fejlen er den samme :)
Avatar billede para7 Nybegynder
08. maj 2010 - 09:02 #12
Tak for al hjælpen, men intet synes at virke:

strSQL = strSQL & "AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB('07-05-2010', INTERVAL 7 DAY)"

strSQL = strSQL & "AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB("07-05-2010", INTERVAL 7 DAY)"

strSQL = strSQL & "AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB(07-05-2010, INTERVAL 7 DAY)"

'curdate = date()
curdate = "07-05-2010"
strSQL = strSQL & "AND DATE_FORMAT(clipDato ,GET_FORMAT(DATE,'EUR')) >= DATE_SUB(" & curdate & ", INTERVAL 7 DAY)"

Min egen løsning virker, men er lidt bøvlet at ændre på.
Avatar billede para7 Nybegynder
08. maj 2010 - 09:03 #13
Datoen skal vende EUR europæisk 07-05-2010 for at matche mit varchar felts format.
Avatar billede para7 Nybegynder
11. maj 2010 - 12:45 #14
Jeg lukker her, kommer ikke længere. Min egen kode kunne dog bruges begrænset.
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
Computerworld tilbyder specialiserede kurser i database-management

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