Ok... entonces... igual no veo el problema... 
 Código PHP:
    $sql = "SELECT * FROM tabla WHERE campoFecha BETWEEN '$desde' AND '$hasta'"; 
    
  ¿ $desde y $hasta tienen el formato del tipo DATE de Mysql (yyyy-mm-dd)? 
El manual dice:
 Cita:  This is equivalent to the expression (min <= expr AND expr <= max) if all the arguments are of the same type.
    http://dev.mysql.com/doc/mysql/en/Co...Operators.html 
Si no.... pon la forma cómo lo estás haciendo tú... y el formato que tienen esas variables $desde y $hasta. Ah.. y también el tipo de dato con el que guardas las variables en tu BD. 
Saludos
