[MySQL] Selecteren met begin en einddatum

Pagina: 1
Acties:

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 24-11 23:44
Hey mensen, ben ik weer eens met een vraag:

Ik heb een tabel in de database waarin nieuws staat, dit nieuws heeft zowel een start als een einddatum, om het nieuws op te halen gebruik ik de volgende query:

code:
1
2
3
4
5
6
SELECT * 
FROM nieuws
WHERE nieuws_startdatum >= '2006-11-20'
AND nieuws_einddatum < '2006-11-20'
ORDER BY nieuws_startdatum DESC 
LIMIT 3


Het test bericht staat momenteel in de database op 2006-11-20 (vandaag), en de einddatum staat op 2006-11-30.

Het selecteren met alleen een startdatum gaat probleemloos, maar als ik wil selecteren met einddatum er bij krijg ik geen results terug. Verder zitten er ook geen fouten in de query en mijn collega weet het ook niet zeker.

Mijn collega heeft me wel een andere query gegeven, iets ingewikkelder maar niks schokkends.

code:
1
2
3
4
5
6
"SELECT * FROM news 
WHERE ( ( YEAR(newsEnddate) < '" . $jaar . "')
OR ( YEAR(newsEnddate) = '" . $jaar . "' AND MONTH(newsEnddate) < '" . $maand . "')
OR ( YEAR(newsEnddate) = '" . $jaar . "' AND MONTH(newsEnddate) = '" . $maand . "' AND DAYOFMONTH(newsEnddate) < '". $dag ."' )) 
AND flagID = '".$flagID."' 
ORDER BY newsStartdate DESC"

(ja, ik weet dat de tweede niet overeenkomt, alleen zo heeft hij die me gegeven en moet dus nog eventueel aangepast worden).

Welke van de twee is het beste? En hoe kan ik de eerste query aanpassen zodat deze wel goed werkt?

Grts.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Die eerste query werkt niet omdat je twee keer dezelfde datum gebruikt. ;) Afgezien van dat zou die prima moeten werken. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Zo werktie ook als je veld NULL is...

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
    *
FROM
    nieuws
WHERE
    (
    nieuws_startdatum <= NOW()
    OR
    nieuws_startdatum IS NULL
    )
AND
    (
    nieuws_einddatum > NOW()
    OR
    nieuws_einddatum IS NULL
    )
ORDER BY
    nieuws_startdatum DESC

  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 24-11 23:44
Thanks!

Heb 't nu werkend. ^^

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:15

Dido

heforshe

Los van nullables, je had toch zelf kunnen bedenken dat het vaag is dat je startdatum in de toekomst moet liggen (na vandaag), en je einddatum in het verleden :?

Wat betekent mijn avatar?


  • Psyed
  • Registratie: Oktober 2003
  • Laatst online: 24-11 23:44
Dido schreef op maandag 20 november 2006 @ 13:28:
Los van nullables, je had toch zelf kunnen bedenken dat het vaag is dat je startdatum in de toekomst moet liggen (na vandaag), en je einddatum in het verleden :?
Ja, maar dat was dus een fout die ik pas achteraf zag. ;) We hebben er met twee man overheen gekeken. :p
Pagina: 1