How to SELECT rows with time duration stored in varchar column?
SELECT   * FROM table
WHERE (SUBSTRING_INDEX(duration,':',1)*60)+SUBSTRING_INDEX(duration,':',-1) 
BETWEEN 180 AND 405


SQL Fiddle

Use SUBSTRING_INDEX to isolate the minutes and seconds,convert minutes to seconds and add them up so the where condition has something to compare.Assuming all durations in the table have minutes and seconds separated by ':'