sql >> Database >  >> RDS >> Mysql

Is een datum binnen een aantal perioden

Deze functie moet doen wat je wilt. Het vertrouwt op MySQL dat booleaanse resultaten behandelt als 1 of 0 in een numerieke context, dus de MAX oproep wordt effectief een OR van alle voorwaarden.

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')

Uitgang

check_activity(20, '2018-01-10')    check_activity(20, '2018-02-01')
1                                   0

Demo op dbfiddle




  1. Hoe splits ik de uitvoer van mysqldump in kleinere bestanden?

  2. Krijg resultaten die binnen de markeringsradiussen vallen uit de database

  3. Sql-query om de som te achterhalen tegen individuele id

  4. MySQL als rij bestaat update anders invoegen