SQL-介于......和...之间结合YEAR()

时间:2014-02-20 20:18:43

标签: mysql sql

我有以下查询,这给我一个错误的语法错误!

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

语法错误在哪里?

1 个答案:

答案 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