Why do you do such weird things like:
string d = Request.QueryString["ava"];
DateTime a = Convert.ToDateTime(d);
txtEff.Text = d;
Instead of
Convert.ToDateTime
use
DateTime.ParseExact
, and then use that value directly for your SQL query instead of a TextBox content:
insert.Parameters.AddWithValue("@LoanAvailableFrom", a);
Of course, you should also take care of better naming of your variables.