你说的对,非延续性动词完成时不能和一段时间状语连用。come也的确是非延续性动词。但你的这句话中for a month是作目的状语,for有"为了"的意思。
相信自己!这个句子有错,不能用come(终止性动词的完成时的肯定形式不能与一段时间状语连用)应该把come 改为been
非延续性动词完成时不能和表示一段的时间状语连用。如果要和表示一段时间的状语连用,需将动词改成延续性的动词。come 改成be here.He has been here for a month.