Убейте 2 зайцев одним выстрелом и параметризируйте ваш SQL (защитит вас от атак SQL-инъекций):
m_Command.CommandText = "SELECT ref_dig_pumpcontrol, ref_energy, ref_datetime FROM [molisoftSchema].[Refresh] WHERE ref_pump_id = @pumpid AND ref_datetime BETWEEN @StartDate AND @EndDate ORDER BY ref_datetime ASC";
m_Command.Parameters.AddWithValue("@pumpid", pump.ID);
m_Command.Parameters.AddWithValue("@StartDate", start);
m_Command.Parameters.AddWithValue("@EndDate", end);
Проблема заключалась в том, что начальные и конечные значения DateTime .NET сериализуются в строку для «жесткого кода» в генерируемый вами SQL. Тем не менее, это строковое представление не может быть переведено обратно в допустимое время-дату в SQL (вам нужно использовать БЕЗОПАСНЫЙ формат даты, например, yyyy-MM-ddTHH: mm: ss - поэтому явно отформатируйте эти DateTimes перед добавлением в оператор SQL) , Однако параметризация является гораздо лучшим решением, которое решает проблемы такого рода.