我有以下查询,这给我一个错误的语法错误!
SELECT tel_no
FROM donors AS dnr
LEFT JOIN donations AS dn ON dnr.id = dn.donor_id
LEFT JOIN donation_methods AS dm ON dn.donation_method_id = dm.id
WHERE NOW() >= DATE_ADD(dn.created, INTERVAL dm.recovery_time DAY)
AND dnr.gender = 'female'
AND EXTRACT(YEAR FROM dnr.dob) - YEAR() BETWEEN 40 AND 54 //syntax error here
AND dnr.blood_group_id = 2
它给了我这个错误:
check the manual that corresponds to your MySQL server version for the right syntax to use near ') BETWEEN 40 AND 54 AND dnr.blood_group_id = 2
语法错误在哪里?
答案 0 :(得分:1)
YEAR()
需要日期/日期时间参数。你所需要的只是
AND YEAR(dnr.dob) - YEAR(CURDATE()) BETWEEN 40 AND 54
请注意,您的论点是相反的,除非您实际处理未来的出生日期。你会做的
AND (1973 - 2014) BETWEEN 40 AND 54 which becomes -41 BETWEEN 40 AND 54