você deve comparar data com data e não data com datetime
AND DATE(start_date) <= '2017-08-28'
AND DATE(end_date) >= '2017-08-28'
então
SELECT id AS couponID, percentage_off, usage_count, used_count
FROM coupons
WHERE `code` = 'DANGER'
AND active_status = '1'
AND deleted = '0'
AND DATE(start_date) <= '2017-08-28'
AND DATE(end_date) >= '2017-08-28'
AND category LIKE '%cLevel%'
no seu caso, você está usando var em php e deve converter corretamente usando str_to_date, por exemplo:
str_to_date( '$now'),'%Y-%m-%d');
SELECT id AS couponID, percentage_off, usage_count, used_count
FROM coupons
WHERE `code` = 'DANGER'
AND active_status = '1'
AND deleted = '0'
AND DATE(start_date) <= str_to_date( '$now'),'%Y-%m-%d')
AND DATE(end_date) >= str_to_date( '$now'),'%Y-%m-%d')
AND category LIKE '%cLevel%'
ou como usado por OP
str_to_date( '$now'),'%Y-%m-%d %H:%i:%s');
SELECT id AS couponID, percentage_off, usage_count, used_count
FROM coupons
WHERE `code` = 'DANGER'
AND active_status = '1'
AND deleted = '0'
AND start_date <= DATE_FORMAT('$now','%Y-%m-%d %H:%i:%s')
AND end_date >= DATE_FORMAT('$now','%Y-%m-%d %H:%i:%s')
AND category LIKE '%cLevel%'