La parte di query relativa alle date è semplicemente

where curdate() not between periodo_in and periodo_out

verifica se il resto della query è ok.