Avatar billede webcreator Nybegynder
09. juli 2004 - 12:22 Der er 18 kommentarer og
1 løsning

Between medtager kun værdier imellem, ikke de angivne værdier

Hej Eksperter.

Jeg har et lille problem. Jeg benytter BETWEEN til at finde poster fx i området 10 - 100. Desværre henter den kun posterne 11-99. Hvordan får jeg 10 og 100 med?
Avatar billede webcreator Nybegynder
09. juli 2004 - 12:47 #1
?
Avatar billede michael_stim Ekspert
09. juli 2004 - 12:50 #2
Den enkle måde: 9-101.
Avatar billede michael_stim Ekspert
09. juli 2004 - 12:56 #3
Hmm? Der står i min bog at citat:"A BETWEEN B is completely equivalent to: (A >= B) AND (A <= C)"
Så den burde tage de tal med du skriver.
Avatar billede michael_stim Ekspert
09. juli 2004 - 12:57 #4
A BETWEEN B AND C
skulle det selvfölgelig väre.
Avatar billede webcreator Nybegynder
09. juli 2004 - 13:05 #5
Den "simple" måde duer ikke - når mine brugere indtaster fx. 10 og 100, så skal de ikke selv sidde og regne ud, at der kun vises 11 - 99.

Min Query ser sådan ud, hvis det kan hjælpe :
$soeg = mysql_query("SELECT * FROM table WHERE `tal` BETWEEN '$fra' AND '$til'");
Avatar billede webcreator Nybegynder
09. juli 2004 - 13:08 #6
Faktisk burde jeg tilføje, at $fra og $til er datoer, og at feltet i databasen er et datetime field. Det var bare mere simpelt at forklare det med tal .)
Avatar billede jaw Nybegynder
09. juli 2004 - 13:20 #7
Hvordan bruger du den med datoerne? Hvad er formatet etc.? For michael_stim har ret så vidt jeg kan se, at det er fra-og-med til til-og-med.
Avatar billede webcreator Nybegynder
09. juli 2004 - 13:23 #8
Som beskrevet oven for er det et felt af typen 'datetime'.

Ved input af (US system) :
Fra : 2001-10-05
Til : 2004-07-09

Her skulle jeg gerne få alle poster udskrevet, som ligger inden for dette tidsrum. Men poster lavet 2004-07-09 kommer ikke med.

Min query ser som sagt sådan ud :
$soeg = mysql_query("SELECT * FROM table WHERE `tal` BETWEEN '$fra' AND '$til'");
Avatar billede webcreator Nybegynder
09. juli 2004 - 13:28 #9
`tal` er således mit datetime felt
Avatar billede webcreator Nybegynder
09. juli 2004 - 13:40 #10
?
Avatar billede michael_stim Ekspert
09. juli 2004 - 13:48 #11
Kan ikke rigtigt hjälpe dig.
Du kan jo göre sådan at du adderer/subtraherer med en dag når du henter datoen fra brugeren.
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$yesterday = mktime(0, 0, 0, date("m")  , date("d")-1, date("Y"));
Avatar billede jakoba Nybegynder
10. juli 2004 - 17:27 #12
De der '-tegn vil ihvertfald give problemer de får mysql til at se fra og til som strenge og så bliver 'større end' beregnet som alfabetisk orden. dvs at '100' < '2' giver sand fordi bogstav '1' er mindre end bogstav '2'
Det er muligt det blot er den fejl du fortolker som 'kun værdier imellem'
så årøv:
    $soeg = mysql_query("SELECT * FROM table WHERE `tal` BETWEEN $fra AND $til");
Avatar billede jakoba Nybegynder
10. juli 2004 - 18:33 #13
Ups. der5 var jeg helt ved siden af. Med et datetime felt og datetime værdier skal '-tegnene være der.
Men din test skal være med datetime værdier for numeriske værdier kan det gå galt som beskrevet ovenfor..
Avatar billede webcreator Nybegynder
11. juli 2004 - 18:24 #14
Jeg kigger lige på det på mandag :)
Avatar billede Slettet bruger
12. juli 2004 - 23:07 #15
Jeg tror humlen i problemet kommer af at den fulde DATETIME-værdi af 2004-07-09 er 2004-07-09 00:00, og du beder den dermed om at finde tidspunkter imellem 2001-10-05 00:00 og 2004-07-09 00:00, og så skal den naturligvis ikke tage 2004-07-09 02:10 med.

Løsningen kunne være at sætte 23:59 på sluttidspunktet.
Avatar billede jakoba Nybegynder
12. juli 2004 - 23:57 #16
eller brug mysql's indbyggede DATE funktion så  hh:mm:ss bliver ignoreret.
  $soeg = mysql_query("SELECT * FROM table WHERE DATE(`tal`) BETWEEN DATE('$fra') AND DATE('$til')");
se: http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Avatar billede webcreator Nybegynder
13. juli 2004 - 12:14 #17
Yes, det var naturligvis pga. klokken. Jeg lavede feltet om til et 'data', og nu spinder det bare. Jeg siger mange tak for hjælpen alle sammen :)

Sandbox og JakobA > Gider I smide et svar ?
Avatar billede Slettet bruger
13. juli 2004 - 12:43 #18
Her er et fra mig.
Avatar billede webcreator Nybegynder
13. juli 2004 - 17:27 #19
Nå, jeg ser og få lukket, inden jeg glemmer det :)
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