[MySQL] Verjaardagen tussen 2 dagen geleden en over 3 dagen
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)
1
2
3
4
5
6
7
8
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 )
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"
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 -
Query ziet er dan zo uit:
Code (php)
1
2
3
4
5
6
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)
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)