num_daysopen returns how many days since dateopened.
Days left returns how many days a user has to close something (they have upto 28 days from dateopened). If its longer than 28 days days_left needs to default to 0 not -5 or -15 etc.
SELECT
DATEDIFF(DATE(NOW()), DATE(dateopened)) AS num_daysopen,
(28 - DATEDIFF(DATE(NOW()), DATE(dateopened))) as days_left
FROM table
Use GREATEST().