I am storing my dates in column server_date_time in varchar in dd/mm/yyyy format and i want to fetch the records lying between some dates so i have
STR_TO_DATE is enough. DATE_FORMAT changes it back to VARCHAR
SELECT...
FROM...
WHERE str_to_date(substr(server_date_time,1,10),'%d/%m/%Y')
BETWEEN '29/09/2012' AND '07/10/2012'
when dealing date please use DATE or DATETIME data type. This will avoid you from doing casting which affects the performance of the query.