El problema puede ser también que estás haciendo una operación matemática con un DATE y por default MySQL convierte el DATE a otra cosa, por lo que la respuesta es un INT o un String.
Por caso, si haces:
el resultado será
que es el resultado de
Si lo que quieres es hacer operaciones con DATE, DATETIME o TIME, y que te devuelvan DATE, DATETIME o TIME, tienes que usar las funciones de manejo de fechas y horas en MYSQL.
Por ejemplo:
Si quieres saber la diferencia entre dos fechas expresada en días: DATEDIFF(date_final, date_inicial);
Si quieres obtener una fecha con una cantidad x de tiempo agregada: DATE_ADD(fecha, INTERVAL x unidad), DONDE unidad puede ser YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS.
En esos casos los conectores (ODBC o .NET) te devolverán los valores en sus tipos primitivos.