U gaat de fout in door om te beginnen een waarde rechtstreeks in uw SQL-query op te nemen. Gebruik SQL met parameters en specificeer de waarde als een DateTime
, en ervan uitgaande dat uw databasetabel ook . is met behulp van een datum/datum/tijd-veld (wat het zou moeten zijn), zou het goed moeten komen.
U moet om drie redenen vermijden om waarden rechtstreeks in uw SQL op te nemen:
- Je krijgt dan lastige tekenreeksconversies die ongepaste formaten enz. kunnen gebruiken. Dat is hier het probleem.
- U nodigt SQL-injectie-aanvallen uit
- Je haalt code en gegevens door elkaar, waardoor het moeilijker wordt om de code te lezen en moeilijker om de gegevens te controleren
Je wilt zoiets als:
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
}
Als Des.despdate
is niet al een geschikt gegevenstype is, moet u dat veranderen...