Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy data w niektórych okresach?

Ta funkcja powinna robić to, co chcesz. Polega na tym, że MySQL traktuje wyniki logiczne jako 1 lub 0 w kontekście numerycznym, stąd MAX wywołanie skutecznie staje się OR wszystkich warunków.

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

Wyjście

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

Demo na 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. Wstawianie wartości $zmiennej lub $_POST do tabeli mysql

  2. Rekurencyjne usuwanie CakePHP

  3. Jak uzyskać losowy wiersz na bieżący dzień?

  4. czy możemy uniknąć elokwentnego w dużej ilości rekordów?

  5. Jak na wyłączność zablokować bazę mysql?