Diese Funktion sollte das tun, was Sie wollen. Es beruht darauf, dass MySQL boolesche Ergebnisse in einem numerischen Kontext entweder als 1 oder 0 behandelt, also MAX
call wird effektiv zu einem OR
aller Bedingungen.
CREATE FUNCTION check_activity(project_id INT, check_date DATE)
RETURNS BOOLEAN
DETERMINISTIC
BEGIN
RETURN (SELECT MAX(check_date BETWEEN ActiveFrom AND ActiveTo) FROM projects WHERE ProjId = project_id);
END
SELECT check_activity(20, '2018-01-10'), check_activity(20, '2018-02-01')
Ausgabe
check_activity(20, '2018-01-10') check_activity(20, '2018-02-01')
1 0