Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
So try:
DateTime maxdate = DateTime.Now.Date;
DateTime mindate = DateTime.Now.Date.AddMonths(-3);
SqlDataSource1.SelectCommand = "SELECT * FROM general1 WHERE [date] BETWEEN @MND AND @MXD";
SqlDataSource1.SelectCommand.Parameters.AddWithValue("@MND", mindate);
SqlDataSource1.SelectCommand.Parameters.AddWithValue("@MXD", maxdate);