Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:24 Der er 20 kommentarer og
2 løsninger

Timestamp ikke ældre ind 2 uger

Hejsa
Jeg har denne kode til at hente de mest læste nyheder på min side. Mit problem er at de nyheder som er læst mest bliver ved med ligge først selv efter flere måneder. Jeg har et timestamp felt i  min tabel og jeg vil gerne gøre sådan at de nyheder der er ældre ind 2 uger ikke bliver valgt.

Hvordan siger man hent ikke nyheder ældre ind 2 uger?

sql = "select * from nyhed order by hits DESC limit 0,3 "
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:29 #1
select * from nyhed order by hits where timestampfelt < 1209600 DESC limit 0,3
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:30 #2
ups, manglede noget
select * from nyhed order by hits where timestampfelt < now()-1209600 DESC limit 0,3
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:35 #3
Det giver følgende fejl:

have an error in your SQL syntax near 'where date_time < now()-1209600 DESC limit 0,3' at line 1
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:37 #4
er det et alm timestamp felt, eller sætter du det på anden vis?

prøv
UNIX_TIMESTAMP()-1209600 istedet for now()
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:40 #5
Det er et timestamp felt i mysql. UNIX_TIMESTAMP giver følgensw fejl:

have an error in your SQL syntax near 'where date_time < UNIX_TIMESTAMP()-1209600 DESC limit 0,3 ' at line 1
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:42 #6
Ups have lavet en fejl tester lige igen
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:43 #7
select * from nyhed order by hits where timestampfelt < now()-1209600 DESC limit 0,3

Virker næsten perfekt nu, men er du sikker på at 1209600 er 2 uger
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:44 #8
er det ikke 3
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:45 #9
60sekunder*60minutter*24timer*14dage = 1209600
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:46 #10
Hmm.. så virker det nok ikke alligevel, da den henter data fra den 14-12-03
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:48 #11
Det virker sku ikke.. prøvede lige at ændre værdien til 604800 = 1 uge men den henter de samme data
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:49 #12
måske har jeg fået byttet rundt på større end/ mindre end tegn, kan aldrig huske hvad der er hvad
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:50 #13
det burde virke med mow() hvis felttypen er en alm timestamp
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:50 #14
now() hedder det jo ;-)
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:51 #15
Det virker fint nu det er mig som ikke tænker mig om, jeg har jo et felt som hedder hits.. det ændre jo timestamp feltet hele tiden
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:53 #16
Kan man konvertere denne dato til et timestamp felt  14-12-03?
Avatar billede ztyxx Nybegynder
15. januar 2004 - 10:55 #17
ja det mener jeg at man kan, tror at det er datetime() man skal bruge, er dog ikke helt klar over hvordan
Avatar billede tsearex999 Nybegynder
15. januar 2004 - 10:57 #18
Ok det finder jeg selv ud af..men smid et svar og mange tak for hjælpen
Avatar billede ztyxx Nybegynder
15. januar 2004 - 14:47 #19
du skal ikke give mig 200 point for dette, læg selv et svar, og behold de fleste :-)
Avatar billede tsearex999 Nybegynder
04. marts 2004 - 08:04 #20
svar
Avatar billede tsearex999 Nybegynder
04. marts 2004 - 08:06 #21
Undskyld den lange svar tid
Avatar billede ztyxx Nybegynder
04. marts 2004 - 10:30 #22
helt okay, takker for 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
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