Mysql
 sql >> база данни >  >> RDS >> Mysql

Е дата в рамките на някои от периодите

Тази функция трябва да прави това, което искате. Той разчита на това, че MySQL третира булевите резултати като 1 или 0 в числов контекст, следователно MAX повикването ефективно се превръща в OR на всички условия.

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

Изход

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

Демо на dbfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php,postgresql,mysql

  2. Имате проблеми с MySQL Join, което трябва да отговаря на множество условия

  3. използвате Google Документи като база данни?

  4. Осигуряване на php api за използване в приложение за Android

  5. Visual Studio 2017 не показва MySQL в списъка с връзки