Chức năng này sẽ làm những gì bạn muốn. Nó dựa vào MySQL xử lý kết quả boolean là 1 hoặc 0 trong ngữ cảnh số, do đó MAX
cuộc gọi hiệu quả trở thành một OR
của tất cả các điều kiện.
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')
Đầu ra
check_activity(20, '2018-01-10') check_activity(20, '2018-02-01')
1 0