Por favor, tente isto:
SELECT CAST(AVG(start_date + (IFNULL(end_date,start_date)-start_date)/2) AS DATETIME) AS average_date FROM TableName
Se as datas forem armazenadas como carimbo de data/hora, a consulta acima fornecerá o tempo médio entre o início e o término de todos os registros.