Avatar billede majbom Novice
25. februar 2004 - 13:57 Der er 14 kommentarer og
1 løsning

tidsforskel i søgning

hej eksperten...

jeg er igang med en avanceret søgefunktion på min side, og jeg er stødt på et problem:

det jeg vil søge i har en kolonne der hedder "date" hvor datoen står i følgende format: "2004-02-25", jeg vil gerne kunne søge på entries som f.eks ikke er ældre end 3 mdr... jeg regner med at jeg skal bruge strtotime()-funktionen, men så heller ikke mere...

pft
Avatar billede limemedia Nybegynder
25. februar 2004 - 14:08 #1
kommer kolonnen fra en database - det er væsentligt hurtigere med en sådan operation i databasen end i php
Avatar billede majbom Novice
25. februar 2004 - 14:11 #2
ja, kolonnen ligger i databasen...
glemte da helt at sige at jeg bruger mysql
Avatar billede jakoba Nybegynder
25. februar 2004 - 14:13 #3
MySQL har en masse finktioner til at håndtere datoer og tider.

så su kan fx lave din query som:

$sql_kommando = "
    SELECT *
    FROM  dinTabel
    WHERE  MONTH( datofelt ) +3 >= MONTH( NOW() )
";

så får du kun de rækker der en mindre end 3 måneder gamle.
se: http://www.mysql.com/doc/en/Date_and_time_functions.html

mvh JakobA
Avatar billede Slettet bruger
25. februar 2004 - 14:13 #4
SELECT felter FROM tabel WHERE TO_DAYS(datofelt)>TO_DAYS(NOW())-90

kunne være en mulighed
Avatar billede Slettet bruger
25. februar 2004 - 14:16 #5
Jakob: Din vil også fange alle fra sidste år, hvor månednummer +3 er større en nuværende månednummer. Det vil sige, at i januar, februar og marts, vil ALT blive vist.
Avatar billede limemedia Nybegynder
25. februar 2004 - 14:17 #6
jakoba >> dén går ikke helt, da MONTH() ikke tager højde for år...
sandbox >> 90 dage ? tilnærmelsesvist rigtigt, men heller ikke præcist...

SELECT *
FROM tabel
WHERE datofelt >= SUBDATE(NOW(), INTERVAL 3 MONTHS)
Avatar billede Slettet bruger
25. februar 2004 - 14:18 #7
Jep, lars-jensen din er bedre.
Avatar billede majbom Novice
25. februar 2004 - 14:20 #8
-> lars jensen - er dt virkelig så simpelt? og kan det bruges med det det dato format jeg bruger (2004-02-25)?
Avatar billede limemedia Nybegynder
25. februar 2004 - 14:23 #9
splazz >> hvis "datofelt" er af typen Date, DateTime eller Timestamp (lidt mere usikker) bør det virke... Ér det varchar, skal der arbejdes lidt mere - men man gemmer jo heller ikke datoer i tekst felter, vel ? ;)
Avatar billede majbom Novice
25. februar 2004 - 14:25 #10
jamen hvis man har et felt af typen "Date" hvad sker der så hvis det man smidder ind i cellen ikke har det helt rigtige format?
Avatar billede limemedia Nybegynder
25. februar 2004 - 14:27 #11
bliver til 0000-00-00
Avatar billede jakoba Nybegynder
25. februar 2004 - 14:30 #12
Lige denne gang er vi så heldige at du gemmer dine datoer i en streng i 'programmør-format' det kan mysql også finde ud af, men det er korrekt som lars siger at  de dertil indrettede date og datetime felttyper er bedst. (det går hurtigere og fylder mindre)

Det er desværre også korrekt at mit forslag ovenfor ikke duer :-)
Avatar billede majbom Novice
25. februar 2004 - 14:33 #13
ok.. det er jo fantastisk

mange tak for hjælpen!
Avatar billede majbom Novice
25. februar 2004 - 15:15 #14
ok... nu har jeg så denne sql-sætning: $sql2 = "SELECT postid AS id, brugerid, navn, emne, dato FROM posts WHERE postid='$comm[postid]' AND date =< SUBDATE(NOW(), INTERVAL 3 MONTHS)"; men jeg får er sql-fejl...

synes da ikke at den ser forkert ud!?
Avatar billede limemedia Nybegynder
25. februar 2004 - 16:03 #15
Som Erik pointerede i dit andet spørgsmål, fik jeg et S for meget med ... jeg fejllæste manualen, beklager
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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