То, что вам нужно, это такой SQL вместо:
DateTime dtFrom = DateTime.Now.AddDays(day - 1).Date;
DateTime dtTo = past.AddDays(1);
string strSQL = "Select Count(*) From Appointment_Info Where APPT_Dt Between @from And @to";
int appoinments = 0;
using (SqlCommand cc = new SqlCommand(strSQL, cn))
{
cc.Parameters.AddWithValue("@from", dtFrom);
cc.Parameters.AddWithValue("@to", dtTo);
appoinments = Int32.Parse(cc.ExecuteScalar().ToString());
}
Проблема в том, что вам не нужна точная дата, так как она вам ничего не даст, вам скорее нужно диапазон дат, означающих что-либо между прошедшей датой и днем после нее.
Приведенный выше код также дает лучшую практику использования параметров и правильной утилизации объекта Command.