No está almacenado sys.dm_exec_cached_plans, ni está enterrado en ninguna parte del plan XML que pueda encontrar. Sin embargo, hay información útil en otros DMV.
Para los procedimientos almacenados, podemos obtener el tiempo desde que se almacenó en caché un plan sys.dm_exec_procedure_stats:
SELECT TOP(250) 
    p.name AS [SP Name]
    , ps.execution_count
    , ps.cached_time
FROM 
    sys.procedures p WITH (NOLOCK)
INNER JOIN 
    sys.dm_exec_procedure_stats ps WITH (NOLOCK)
ON  p.[object_id] = ps.[object_id]
WHERE 
    ps.database_id = DB_ID()
ORDER BY 
    ps.cached_time DESC 
OPTION 
    (RECOMPILE);
Para consultas ad-hoc, existe el tiempo de creación en sys.dm_exec_query_stats:
SELECT TOP(250) 
    st.[text] AS [QueryText]
    , qs.execution_count
    , qs.creation_time
FROM 
    sys.dm_exec_cached_plans cp WITH (NOLOCK)
INNER JOIN
    sys.dm_exec_query_stats qs WITH (NOLOCK)
ON  qs.plan_handle = cp.plan_handle
CROSS APPLY 
    sys.dm_exec_sql_text(cp.plan_handle) st
WHERE 
    cp.objtype = N'Adhoc' 
ORDER BY 
    qs.creation_time DESC 
OPTION 
    (RECOMPILE);
Según @SqlKiwi ... el cambio de creation_time a cached_time fue solo porque se agregaron procedimientos y desencadenantes en 2008 y se aprovechó la oportunidad para elegir un nombre más descriptivo. El tiempo creado / en caché refleja la última compilación, no el tiempo de creación del plan original.