Vous vous trompez en essayant d'inclure une valeur directement dans votre requête SQL pour commencer. Utilisez SQL paramétré et spécifiez la valeur comme DateTime
, et en supposant que votre table de base de données est aussi en utilisant un champ date/datetime (ce qui devrait être le cas), ça devrait aller.
Vous devez éviter d'inclure des valeurs directement dans votre SQL pour trois raisons :
- Vous vous retrouverez avec des conversions de chaînes gênantes qui peuvent utiliser des formats inappropriés, etc. C'est le problème ici.
- Vous invitez les attaques par injection SQL
- Vous mélangez code et données, ce qui complique la lecture du code et la vérification des données
Vous voulez quelque chose comme :
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
}
Si Des.despdate
n'est pas déjà un type de données approprié, vous devriez le changer...