Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-Between。。而且。。。与年份()合并_Mysql_Sql - Fatal编程技术网

Mysql SQL-Between。。而且。。。与年份()合并

Mysql SQL-Between。。而且。。。与年份()合并,mysql,sql,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_tim

我有下面的查询,它给了我一个关于错误语法的错误

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
它给了我这个错误:

检查与您的MySQL服务器版本对应的手册,以了解在40和54之间以及dnr.blood_group_id=2之间使用的正确语法

错误的语法在哪里

YEAR()
需要一个date/dateime参数。你所需要的只是

AND YEAR(dnr.dob) - YEAR(CURDATE()) BETWEEN 40 AND 54
请注意,你的论点是相反的,除非你实际上与未来的出生日期不一致。你要做什么

AND (1973 - 2014) BETWEEN 40 AND 54  which becomes -41 BETWEEN 40 AND 54

谢谢你的回答!太好了,是的,我一定是生活在月球上才扭转了ARG!再次感谢这个方法实际上是CURDATE()。。对于任何可能会遇到麻烦的人。。