Hi all, I seem to be having a couple of issues with a query. For some reason, it fetches random orders instead of those with the product_id = 2. Not to sure why this is happening. This is part of a booking system but is proving very frustrating! Any help would be hugely appreciated

Code MySQL:
SELECT * FROM hire_order AS o 
LEFT JOIN hire_order_products AS op 
ON o.order_id = op.order_id 
WHERE product_id = 2 AND 
post_date BETWEEN ('2012-08-17') AND ('2012-08-23') OR 
home_date BETWEEN ('2012-08-17') AND ('2012-08-23')
AND order_returned != 2

There seems to be a problem with the dates, for when I remove the dates BETWEEN it works, but I need the dates to grab the correct availability.