El error lo tenes en la definicion del campo. Lo tenes que definir como DATETIME y probar algo asi:
Código PHP:
$sql = "SELECT * FROM tabla
WHERE (tabla.fecha >= '$fec_ini' AND tabla.fecha <= '$fec_fin')
ORDER BY id_tabla";
En donde $fec_ini y $fec_fin yo los defini asi
Código PHP:
$fec_ini = $_POST['fecha_inicial']." 00:00:00";
$fec_fin = $_POST['fecha_final']." 23:59:59";
Aunque de todas maneras tenes un error de concepto, no tendrias que definir las fechas con un varchar, ya que la comparacion entre esos string nunca va a ser lineal.
Te sugiero que cambies el formato a DATETIME
Espero haber ayudado.
Saludos cordiales