I am trying to check for people in a certain age range. I have two ComboBoxes, minagecombobox and maxagecombobox, with values between 1 and 120.
I want to get the people whose age is between these two values (suppose for example I want to filter out the people aged between 18 and 24).
This is the Member table structure:
member_id
member_firstname
member_dob(datatype is string) (values like 1987-09-08,1976-09-08,.....)
i am using mysql as my database…..
**Modified query**
SELECT members.member_Id,
members.member_Lastname as 'Last Name',
members.member_Firstname as 'First Name',
members.member_Postcode as 'Post Code',
members.member_Reference as Reference,
members.member_CardNum as 'Card Number',
members.member_IsBiometric as Biometric,
members.member_DOB as DoB,
mshiptypes.mshipType_Name as Membership,
mshipstatustypes.mshipStatusType_Name as Status,
membertomships.memberToMship_EndDate as Expiry
FROM members
INNER JOIN membertomships ON membertomships.member_Id = members.member_Id
INNER JOIN mshipoptions ON mshipoptions.mshipOption_Id = membertomships.mshipOption_Id
INNER JOIN mshiptypes ON mshiptypes.mshipType_Id = mshipoptions.mshipType_Id
INNER JOIN mshipstatustypes ON mshipStatusTypes.mshipStatusType_Id = membertomships.mshipStatusType_Id
WHERE memberToMship_EndDate BETWEEN '2011-09-24' AND '2011-09-30'
AND members.member_active LIKE 'y%'
AND (YEAR(CURDATE(members.member_Dob))-YEAR()) - (RIGHT(CURDATE(),5)< RIGHT(member_Dob,5)) BETWEEN '21' AND '102'
ORDER BY members.member_Lastname
got an error like this…..
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'member_Dob))-YEAR()) - (RIGHT(CURDATE(),5)< RIGHT(member_Dob,5)) BETWEEN '21' AN' at line 19
Try this:
The WHERE clause has the age calculation formula. Get the number of years by subtracting the year of birth from current year and then further subtract 1 if one current day and month is less than the day and month of DOB. In case, you get a datatype mismatch error, use
STR_TO_DATE(member_dob, '%Y-%M-%d')to convert the string DOB to DATETIME DOB.