Hacele una conversión DATE( CAST( 
valor as DATETIME)): 
 Cita:  SELECT n_envio, guia_cliente,
DATE(CAST((CASE WHEN recepcion_conforme =1 THEN fecha_visita1
WHEN recepcion_conforme2=1 THEN fecha_visita2
WHEN recepcion_conforme3=1 THEN fecha_visita3
ELSE ' '
END) AS DATETIME)) AS fecha
FROM Orden_envio;
    En esencia va a funcionar, erpo puede darte problemas con en ELSE. por eso el ELSE tiene que devolver un string distinto. 
 Cita:  SELECT n_envio, guia_cliente,
DATE(CAST((CASE WHEN recepcion_conforme =1 THEN fecha_visita1
WHEN recepcion_conforme2=1 THEN fecha_visita2
WHEN recepcion_conforme3=1 THEN fecha_visita3
ELSE '0000-00-00 00:00:00'
END) AS DATETIME)) AS fecha
FROM Orden_envio;