Varias cosas.
Los datos tipo float se almacenan internamente de forma muy diferente a como los ves por pantalla por lo que pretender encontrar "algo como 31." no es posible porque "31." no es un decimal válido, como mucho entenderá que "31", "31." y "31.0" son lo mismo.
Las fechas internamente se almacenan como un float, así que más de lo mismo.
Si ya tienes todos los datos cargados y en el grid lanzar la consulta cada vez que filtra no me parece lo más cómodo, para eso sería mejor que usases componentes tipo DataSet, ClientDataSet, DataSetProvider... según la estructura que más se adecue y filtres en el componente, o sea solo muestres lo que te interesa. De ese modo puedes tener una versión de esas columnas en formato string y buscar en ellas siguiedo la lógica que estás indicando.
Si de todos modos quieres hacerlo a través de una consulta tendrás que construirla de forma diferente.
Si por ejemplo se intruduce la fecha: "01/01" Supondrías que es el uno de enero de cualquier año y deberías construir la consulta así:
Código Delphi
[-] miSql.close;
with miSql.SQL do
begin
Clear;
Text := 'SELECT * FROM HISTORICO WHERE';
Add('month(FECHAEMISION)=:mes and day(FECHAEMISION)=:dia');
Add('ORDER BY FechaEmision');
end;
miSql.ParamByName('mes').AsInteger:= miMes;
miSql.ParamByName('dia').AsInteger:= miDia;
Pero esto aporta una serie de problemas a la hora de construir la consulta que yo personalmente evitaría.