Metti i valori della tua data tra virgolette singole poiché sono stringhe letterali, altrimenti MySQL non può dire che è una data e non il numero (2011 MINUS 1 MINUS 1 =2009).
Non hai nemmeno bisogno dei cast DATE() attorno a loro.
SELECT
*
FROM
shortleavedetails
WHERE
employee_code = '17'
AND
(DATE(authorizeddate) <= '2011-01-01'
AND
DATE(authorizeddate) >= '2010-05-01')