Buscar recurso disponível em determinado período

Preciso de uma ajuda com SQL.

É o seguinte: Tenho uma tabela de atividades com as colunas cod_recurso, cod_area, dt_inicio,dt_fim e preciso buscar os recursos de uma área específica que não estão sendo utilizados em um determinado período.

O período por exemplo é do dia 04-08-2017 a 18-08-2017, se o usuário da área já estiver alocado neste período ou não possa assumir outra atividade neste período, não deve ser listado e sim somente os que estão livres.

Estou fazendo assim, mas acho que não está correto.

Tabela recurso

cod_recurso	cod_area	nome
1	                      6	João
2	                      6	Marcos
3	                      6	Pedro

Tabela atividade

cod_atividade cod_recurso	cod_area	dt_inicio             dt_fim
1	                      1                         6	 2017-08-05       2017-08-20
2	                      2                         6	 2017-08-19       2017-08-19

Com o SQL abaixo está mostrando todos os recursos, mas na verdade deveria mostrar somente o usuário Pedro que não está sendo usado no período.

select distinct r.cod_recurso, r.nome, r.cod_area from recurso as r
where 
r.cod_area = 6 
and r.cod_recurso not in
(select distinct at.cod_recurso from atividade as at 
where 
at.cod_area = 6 and
dt_inicio >= '2017-08-04' AND dt_fim <= '2017-08-18'
)

Assumindo o exemplo que você citou no tópico da data inicial de 04-08-2017 até 18-08-2017, o resultado esperado que deveria ser mostrado deveria ser do Pedro e do Marcos correto? E não apenas do Pedro…

O resultado esperado pode ser mostrado através dessa query:

SELECT * FROM recurso WHERE cod_area = 6 AND cod_recurso NOT IN (SELECT DISTINCT cod_recurso FROM atividade WHERE cod_area = 6 AND dt_inicio BETWEEN '2017-08-04' AND '2017-08-18' OR dt_fim BETWEEN '2017-08-04' AND '2017-08-18')

Obrigado Daniel! Vocês está correto, eu havia esquecido de escrever o marcos.