Sie gehen falsch, wenn Sie versuchen, einen Wert direkt in Ihre SQL-Abfrage aufzunehmen, um damit zu beginnen. Verwenden Sie parametrisiertes SQL und geben Sie den Wert als DateTime
an , und vorausgesetzt, Ihre Datenbanktabelle ist auch Wenn Sie ein Datum/Datum/Uhrzeit-Feld verwenden (was es sein sollte), sollten Sie in Ordnung sein.
Sie sollten es aus drei Gründen vermeiden, Werte direkt in Ihr SQL aufzunehmen:
- Sie werden mit lästigen String-Konvertierungen enden, die unangemessene Formate usw. verwenden können. Das ist hier das Problem.
- Sie laden zu SQL-Injection-Angriffen ein
- Sie vermischen Code und Daten, wodurch es schwieriger wird, den Code zu lesen und die Daten zu überprüfen
Sie möchten so etwas wie:
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
}
Wenn Des.despdate
nicht schon ein passender Datentyp, das sollten Sie ändern...