Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist ein Datum innerhalb einiger Perioden

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

Demo auf dbfiddle