Jdete špatně, když se pro začátek pokoušíte zahrnout hodnotu přímo do dotazu SQL. Použijte parametrizované SQL a zadejte hodnotu jako DateTime
a za předpokladu, že vaše databázová tabulka je také pomocí pole datum/datum a čas (což by mělo být), měli byste být v pořádku.
Měli byste se vyhnout zahrnutí hodnot přímo do vašeho SQL ze tří důvodů:
- Skončíte s problematickými převody řetězců, které mohou používat nevhodné formáty atd. Zde je problém.
- Zvete útoky SQL injection
- Mícháte kód a data, což ztěžuje čtení kódu a obtížnější kontrolu dat.
Chcete něco jako:
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
}
Pokud Des.despdate
není již vhodný datový typ, měli byste to změnit...