sql >> Databasteknik >  >> RDS >> Mysql

Är ett datum inom vissa perioder

Den här funktionen ska göra vad du vill. Den förlitar sig på att MySQL behandlar booleska resultat som antingen 1 eller 0 i ett numeriskt sammanhang, alltså MAX anropet blir i praktiken en OR av alla villkor.

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

Utdata

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

Demo på dbfiddle




  1. Referera till en tabell i annat schema och utelämna schemanamn

  2. Mysql EAV matchar rad som fält eller enhets egenskapsvärde

  3. postgresql migrerar JSON till JSONB

  4. Uppdatera uttalande i MySQL med C#