Busca de resultados por data

Olá a todos.Estou com um certo problema.

Estou terminando de fazer uma consulta de agendamentos do meu sistema médico e tive que fazer algumas validações conforme o valor passado pelo usuário.

Ex:
((dataInicio!=null && dataFim==null && rdBtn==2)||(dataInicio==null && dataFim!=null && rdBtn==2))

Na linha acima valido somente se a data de inicio da busca é diferente de null,ou seja,tem valor enviado ao servidor.
Só que não funciona.Mas se eu buscar somente pela data final ela funciona.

Obs:a variavel rdBtn recebe 2 pois, não foi escolhida nenhuma busca adicional para incrementar na query.

A query a seguir só acontece caso a validação funcione.

" WHERE agendamentos.statusAgendamento = “+ status+” AND DATE(agendamentos.data_agendamento) BETWEEN ‘"+dataInicio+"’ AND ‘"+dataFim+"’";

Obrigado.

Boa tarde Pedro, segundo o que entendi do problema, acho que essa validação podia ser testada primeiro somente com dataInicio!=null, e depois no select colocar DATE > dataInicio para a mesma(não sei se tu entendeu a jogada aqui), e depois que conseguir essa parte, daí tu modifica a validação em partes para que de certo com BETWEEN(acho que sem ter duas datas no BETWEEN ele não funciona)…