Mit jOOQ Geburtstage finden
Ich versuche, eine vorhandene Abfrage, die nach bevorstehenden Geburtstagen sucht, in jOOQ umzuwandeln. Meine ursprüngliche Abfrage - mit MySQL und ein bisschen vereinfacht - ist
SELECT COUNT(*)
FROM people
WHERE
DATE_ADD(people_dob, INTERVAL YEAR(CURDATE()) - YEAR(people_dob) YEAR)
BETWEEN CURDATE() and DATE_ADD( CURDATE(), INTERVAL 7 DAY)
Ich habe versucht, es mit jOOQ auszudrücken, bin aber gescheitert. Ich bin so nahe gekommen wie
context
.selectCount()
.from(PEOPLE)
.where(
PEOPLE_DOB.add(year(currentTimestamp()).minus(year(PEOPLE_DOB)))
.between(currentTimestamp()).and(currentTimestamp().add(7)));
Leider heißt das
select count(*)
from `people`
where
date_add(`people`.`people_dob`, interval (extract(year from current_timestamp()) - extract(year from `people`.`people_dob`)) day)
between current_timestamp() and date_add(current_timestamp(), interval 7 day)
Was die Abfrage hier bricht, ist dieexpr_unit
Argument für [DATE_ADD] [date_add], das meine ursprüngliche Abfrage istYEAR
, aber in dem von jOOQ gerenderten istDAY
.
Wie kann ich diese Abfrage in jOOQ übersetzen? Das aktuelle Format interessiert mich nicht sonderlich, ich möchte nur verstehen, wie man das gleiche Ergebnis erzielt.