Try 'DD-MON-YY' format to map to '28-MAY-13'
'MM' maps to the month number.
EDIT: SQL can figure out to use the correct format in to_date; it automatically converts 'DD-MM-YY' to 'DD-MON-YY' when it sees the input string is in '28-MAY-13' format. to_char does not make any assumptions, however; so it is trying to compare '28-05-13' to '28-MAY-13'
EDIT2: An added note is that DUAL can only ever return one row; so you could just do
SELECT sysdate FROM DUAL
Dan Bracuk has some good points about date comparison; when possible keep them in date format. Use trunc(DateTime) if only the day matters and not the time; this is usually necessary if you use '=' but often not necessary if you do check for BETWEEN