Why?
Why do you do that?
Your field in the DB is a DateTime field, yes? If it isn't, it should be, because doing sorting and comparisons on string-based dates is a pain in the A**.
You are using a parametrised query to insert the value - well done - except as a string, which is silly.
Don't. Convert the masked edit into a DateTime in the C# code using DateTime.TryParseExact: this also validate the date and removes any attempts to put the 31st April, or 29th Feb when it isn't a leap year and so forth. So your DB ends up cleaner because you only ever get valid dates entered.
Then, use your parameterized query to pass the DateTime value directly.
DateTime dt;
if (DateTime.TryParseExact(maskedtxbx_dischargedate.Text, "dd/MM/yyyy", out dt))
{
SqlCommand cmd = new SqlCommand("INSERT INTO [date] (discharge_date) values (@discharge_date)", con);
cmd.Parameters.AddWithValue("@discharge_date", dt);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
...
Then use a similar process to do the comparisons.