The problem is that you are comparing as string types, not as a timestamp. Therefore, the format matters. Switching to yyyy-mm-dd makes it work (because the most significant part, the year, is on the left).
But much better, and optimized with indexes to compare like timestamps.
WHERE start_date <= unix_timestamp(curdate()) AND end_date >= unit_timestamp(curdate())
or, for some SQL engines, use the BETWEEN statement:
WHERE unix_timestamp(curdate()) BETWEEN start_date AND end_date
source share