У меня есть этот код:
String strDateFormat = "yyyy-MM-dd";
DateTime startDateDate = string.IsNullOrEmpty(startDate) ? DateTime.Today.AddYears(-10) : DateTime.ParseExact(startDate, strDateFormat, CultureInfo.InvariantCulture);
DateTime endDateDate = string.IsNullOrEmpty(endDate) ? DateTime.Now : DateTime.ParseExact(endDate, strDateFormat, CultureInfo.InvariantCulture);
string queryStringBlog = "SELECT * FROM [dbo].[BlogSubcriptionSql] " +
"where Email like '%_@__%.__%' " +
"and Email not like '%|%' " +
"and CreationDate >= '@startDateDate' " +
"and CreationDate <= '@endDateDate' " +
"order by LastUpdate desc";
Добавляю параметры следующим образом:
commandBlog.Parameters.AddWithValue("@startDateDate", startDateDate);
commandBlog.Parameters.AddWithValue("@endDateDate", endDateDate);
Когда я выполняю команду и пытаюсь прочитать программу чтения, я получаю:

Я попробовал использовать преобразование SQL:
string queryStringBlog = "select * from [dbo].[blogsubcriptionsql] " +
"where email like '%_@__%.__%' " +
"and email not like '%|%' " +
"and creationdate >= convert(datetime, '@startDateDate' ) " +
"and creationdate <= convert(datetime, '@endDateDate' ) " +
"order by lastupdate desc";
Но это, похоже, тоже не работает.
Если это тип даты и времени, вам следует удалить галочки вокруг параметра в коде sql.
@Ralf: Им нужно делать это независимо от типа.
Переменные не заменяются в SQL-запросе. '@startDateDate' — это фактическая строка «@startDateDate», которая не является значением даты/времени. В SSMS имена переменных не заключаются в кавычки, поэтому не делайте этого в своем коде. Вы ведь пробовали свой запрос в SSMS, верно?
@Ralf CreationDate имеет тип datetime в SQL.





Удалите одинарные кавычки из строки:
string queryStringBlog = "SELECT * FROM [dbo].[BlogSubcriptionSql] " +
"where Email like '%_@__%.__%' " +
"and Email not like '%|%' " +
"and CreationDate >= @startDateDate " +
"and CreationDate <= @endDateDate " +
"order by LastUpdate desc";
Какой тип CreationDate в базе данных? Я надеюсь, что это тип DateTime.