/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Problem med dato
Fra : Nederbasse


Dato : 09-11-06 08:40

Hej NG

Jeg skal hente data ud fra en Mysql db, i et php script, som er nyerer end
dagens dato.
Min select ser sådan ud:
SELECT id, navn, afd, laan_fra, laan_til, bem, laan FROM udlaan WHERE
laan_fra >= CURDATE() AND laan = 'cykel 1' OR laan = 'cykel 2' ORDER BY
'laan_fra' ASC

Denne select henter også en dato ud der er 2006-05-05 og som burde være for
gammel.
Datatypen i db'en er Date 000-00-00
Udtræk fra databasen:

id navn afd laan_fra laan_til bem
laan
----|-----------|---------|-------------|-------------|-----------|---------
--
62 Lars Tester NETT 2006-05-05 2006-05-06 KKKKKKK cykel 2

Hvordan får jeg kun nye datoer ud ?
Lars



 
 
Jens Gyldenkærne Cla~ (09-11-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-11-06 10:51

Nederbasse skrev:

> Jeg skal hente data ud fra en Mysql db, i et php script, som
> er nyerer end dagens dato.

Er det ikke svært at arbejde med php-script der endnu ikke er
skrevet


> SELECT id, navn, afd, laan_fra, laan_til, bem, laan FROM
> udlaan WHERE laan_fra >= CURDATE() AND laan = 'cykel 1' OR
> laan = 'cykel 2' ORDER BY 'laan_fra' ASC

Når du både arbejder med AND og OR er det en god ide at anvende
parenteser - eller kan man få nogle grimme overraskelser.

AND binder stærkere end OR, så dit kriterium herover bliver tolket
som:

   (laan_fra >= CURDATE() AND laan = 'cykel 1')
OR (laan = 'cykel 2')

Det du formentlig gerne vil have er følgendE:

   (laan_fra >= CURDATE() )
AND (laan = 'cykel 1' OR laan = 'cykel 2')
   

En måde at undgå forvirringen med AND og OR er at benytte
operatoren IN når man skal give flere valgmuligheder til et felt.

... WHERE felt IN ('a', 'b', 'c')

er det samme som

...   WHERE (felt = 'a' OR felt = 'b' OR felt = 'c')


Din forespørgsel kan derfor også skrives:

SELECT id, navn, afd, laan_fra, laan_til, bem, laan
FROM udlaan
WHERE laan_fra >= CURDATE()
AND laan IN ('cykel 1', 'cykel 2')
ORDER BY 'laan_fra' ASC

- så slipper du for OR og dermed for at tænke på hvordan OR og AND
kombineres.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Søg
Reklame
Statistik
Spørgsmål : 177455
Tips : 31962
Nyheder : 719565
Indlæg : 6408144
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste