[MySQL] Verjaardagen tussen 2 dagen geleden en over 3 dagen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas Matthee

Bas Matthee

11/11/2009 17:19:00
Quote Anchor link
Hallo allemaa,

Ik ben aan het klooien met een query en kom er niet meer uit. Ik heb een query waarin ik uit een profielen-tabel alle id's e.d. opvraag van degenen wie tussen vandaag en over 3 dagen jarig zijn. Dit werkt. Echter krijg ik het niet voor elkaar om in deze query ook nog even 2 dagen ervoor d'rbij te pakken.

Kortom, iedereen die tussen eergisteren en over-overmorgen jarig is..

Query zoals deze nu werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT id, geboortedatum, DATE_FORMAT(geboortedatum, '%Y') AS jaar, DATE_FORMAT(geboortedatum, '%m') AS maand, DATE_FORMAT(geboortedatum, '%d') AS dag
FROM profielen
WHERE IF( 1 * DATE_FORMAT( CURDATE( ) ,  '%c%d' ) >1 * DATE_FORMAT( geboortedatum,  '%c%d' ) , CONCAT( EXTRACT( YEAR
FROM CURDATE( ) ) +1,  '-', RIGHT( geboortedatum, 5 ) ) , CONCAT( EXTRACT( YEAR
FROM CURDATE( ) ) ,  '-', RIGHT( geboortedatum, 5 ) ) )
BETWEEN CURDATE( )
AND DATE_ADD( CURDATE( ) , INTERVAL 3
DAY )


Aan de hand van deze results kan ik vervolgens het aantal dagen en de leeftijd uitrekenen van profielen welke terug komen met de de result.

Kan iemand mij helpen met dit laatste probleempje.

Mag eventueel ook een losse query worden, los van deze. Dan pomp ik dat gewoon erna in de database. Gaat erom dat ik 's nachts met een cronjob de juiste data kan voorbereiden vor verzenden van verjaardagsmailtjes en bijvoorbeeld outputs als: "Persoon1 wordt overmorgen 19 jaar"
 
PHP hulp

PHP hulp

22/12/2024 21:09:46
 
Michael -

Michael -

11/11/2009 19:31:00
Quote Anchor link
Kan je dit niet beter met BETWEEN doen? Zoiets als Between Now-2 en Now+3.
Mysql Between

Zoiets (gevonden met google)?
between (now() - interval 2 day) and (now() + interval 3 day);
Gewijzigd op 01/01/1970 01:00:00 door Michael -
 
Bas Matthee

Bas Matthee

12/11/2009 09:15:00
Quote Anchor link
Op de een of andere manier krijg ik met die aanpassing nog steeds alleen de resultaten met een geboortedatum tussen vandaag en over 3 dagen. En dus niet die van 2 dagen geleden..

Query ziet er dan zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT id, geboortedatum, DATE_FORMAT(geboortedatum, '%Y') AS jaar, DATE_FORMAT(geboortedatum, '%m') AS maand, DATE_FORMAT(geboortedatum, '%d') AS dag
FROM profielen
WHERE IF( 1 * DATE_FORMAT( CURDATE( ) ,  '%c%d' ) >1 * DATE_FORMAT( geboortedatum,  '%c%d' ) , CONCAT( EXTRACT( YEAR
FROM CURDATE( ) ) +1,  '-', RIGHT( geboortedatum, 5 ) ) , CONCAT( EXTRACT( YEAR
FROM CURDATE( ) ) ,  '-', RIGHT( geboortedatum, 5 ) ) )
BETWEEN (NOW() - INTERVAL 2 DAY) AND (NOW() + INTERVAL 3 DAY)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.