没错,你的句子中的that he had been suffering from cancer for 7 years 就是宾语从句,用作动词 know 的宾语,之所以把时间状语 for some time 放到宾语从句的前面,是为了避免它与句末的 for 7 years 排在一起读来拗口。