Du gör fel genom att försöka inkludera ett värde direkt i din SQL-fråga till att börja med. Använd parametrerad SQL och ange värdet som en DateTime
, och förutsatt att din databastabell är också genom att använda ett datum/datumtid-fält (vilket det borde vara) borde det gå bra.
Du bör undvika att inkludera värden direkt i din SQL av tre anledningar:
- Du kommer att sluta med besvärliga strängkonverteringar som kan använda olämpliga format etc. Det är problemet här.
- Du bjuder in SQL-injektionsattacker
- Du blandar kod och data, vilket gör det svårare att läsa koden och svårare att kontrollera data
Du vill ha något som:
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
}
Om Des.despdate
är inte redan en lämplig datatyp, bör du ändra det...