Грешите, като се опитвате да включите стойност директно във вашата SQL заявка като начало. Използвайте параметризиран SQL и посочете стойността като DateTime
и приемем, че вашата таблица с база данни е също използвайки поле за дата/дата и час (което трябва да бъде), трябва да сте добре.
Трябва да избягвате да включвате стойности директно във вашия SQL поради три причини:
- В крайна сметка ще получите неприятни преобразувания на низове, които могат да използват неподходящи формати и т.н. Това е проблемът тук.
- Каните атаки с инжектиране на SQL
- Смесвате код и данни, което прави по-трудно четенето на кода и по-трудно проверката на данните
Искате нещо като:
string sql = @"Select distinct v.* from Ven v
inner join Des d on v.venid=d.venid
and cast(d.despdate as datetime) between @start and @end";
using (MySqlCommand command = new MySqlCommand(connection, sql))
{
command.Parameters.AddWithValue("@start", startDateTime);
command.Parameters.AddWithValue("@end", endDateTime);
// Execute the command here
}
Ако Des.despdate
не е вече е подходящ тип данни, трябва да промените това...