Beste PHPHulpers,

Ik zit met het volgende probleem. Ik wil namelijk de jarigen drie weken van te voren en drie weken erna uit de database trekken. Dus een jarige moet dus zes weken zichtbaar blijven.

Ik heb een tabel contactpersonen met daarin een veld geboortedatum. Het probleem is dat je niet zomaar BETWEEN kan gebruiken. Enig idee hoe ik dit kan oplossen?

Groeten en alvast bedankt voor het antwoord,
PH-MJS

@PH-MJS

Je kan gewoon zoiet doen:

SELECT 
   name 
FROM
   table
WHERE
   birthdate
BETWEEN
   CURDATE() - INTERVAL 3 WEEKS
AND
   CURDATE() + INTERVAL 3 WEEKS


In sommige gevallen kan het zo zijn dat je WEEK in plaats van WEEKS moet gebruiken.
Ha Robert,

Ik heb je query nog niet uitgevoerd, maar volgens mij krijg ik er met die query er geen rijen uit. Simpelweg omdat het dan fout gaat met de jaartallen. Ik kan er ook volledig naast zitten hoor...

Ik heb het op het ogenblik op de volgende manier werkend gekregen:


SELECT contactpersonen.id, contactpersonen.naam
WHERE FORMAT(contactpersonen.geboortedatum, dd-mm)
BETWEEN 'dd-mm' AND 'dd-mm'
@PH-MJS
Je hebt helemaal gelijk daarin...

je kan natuurlijk uiteindelijk dan wel gaan controleren met de maand/ dag zoals je aangaf, maar dan heb je wel die berekening (zoals in mijn vorige post) nodig. Je moet daar alleen de "maand-dag" uithalen en hetzelfde doen met de maand/dag in je tabel.
Ha Robert en andere PHPHulpers,
Ik ben er net achter gekomen dat mijn query niet werkt.
Met andere woorden, alle input is welkom ;)

Gr,
PH-MJS
Je kan de boel beinvloeden met een date format functie van de database. Een snelle die in m'n hoofd schiet voor MySQL zou zoiets zijn:
SELECT
   veld
FROM
   tabel
WHERE
   DATE_FORMAT(geboortedatum, '%m-%d') > DATE_FORMAT(CURDATE() - INTERVAL 3 WEEK, '%m-%d')
AND
   DATE_FORMAT(geboortedatum, '%m-%d') < DATE_FORMAT(CURDATE() + INTERVAL 3 WEEK, '%m-%d')
Edit: Zat nog een fout in, geen tweede parameter voor DATE_FORMAT.
Ha Elwin,
Ik werk met een access db.
Oh jee... nou... uhmm.. succes. ;)
Die kennis heb ik volledig verbannen... :)

En ik heb nu niet de beschikking over Access. Zal proberen vanavond eens iets te testen.
Uit mijn hoofd:

SELECT t_geboortedatums.geboortedatum, DateDiff("d",[ditjaar],Date()) AS Verschil
FROM t_geboortedatums
WHERE (((DateDiff("d",[ditjaar],Date())) Between -21 And 21))

Access is alweer een tijdje geleden ;-)

Reageren