La razón es la siguiente:
NVL es una función que parte de las siglas (Null VaLue) y que en Oracle aplica para diferentes tipos de datos.
Entonces.. si el primer parametro de la función es un numerico, el resultado debe ser un numerico.
Si es date, que es tu caso, debe ser date la salida. Si es string, el retorno debe ser string.
Como quieres un mensaje basado en una fecha y partiendo del criterio que te menciono, esta sería una forma:
Código SQL:
Ver originalSELECT NVL(NULLIF(TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI'),TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI')), 'Same Day') dia FROM dual;