sql >> Database teknologi >  >> RDS >> Mysql

Er en dato inden for nogle af perioder

Denne funktion skal gøre, hvad du vil. Den er afhængig af, at MySQL behandler booleske resultater som enten 1 eller 0 i en numerisk kontekst, således MAX kaldet bliver effektivt en OR af alle betingelserne.

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

Output

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

Demo på dbfiddle




  1. Mysql kan ikke vælge posten i tabellen

  2. Sequelize-fejl:Relationen eksisterer ikke

  3. Hvad er den hurtigste måde at importere en stor mysql database backup på?

  4. SQL-forespørgsel til at hente rækker, hvor en værdi er til stede i et kommasepareret felt