No DB, cada registro com uma data:
Na tabela mytable tem uma coluna data formatada com Type=date.
No HTML, define uma variavel chamada datafinal:
<input type="date" name="datafinal"> *aaaa-mm-dd
echo $datafinal; // mostra corretamente a data digitada no input 2016-08-31
No PHP, para listar os registros deste ano:
Funciona se fizer
$query = "SELECT * FROM mytable WHERE data BETWEEN CAST('2016-01-01' AS DATE) AND CAST('2016-09-16' AS DATE)";
Não funciona (listagem em branco) se fizer
$query = "SELECT * FROM mytable WHERE data BETWEEN CAST('2016-01-01' AS DATE) AND CAST('.$datafinal.' AS DATE)";
Seria erro de sintaxe?