Du tager fejl ved at prøve at inkludere en værdi direkte i din SQL-forespørgsel til at starte med. Brug parameteriseret SQL og angiv værdien som en DateTime
, og forudsat at din databasetabel også er ved at bruge et dato/dato/klokkeslæt felt (hvilket det skal være), burde du have det fint.
Du bør undgå at inkludere værdier direkte i din SQL af tre grunde:
- Du ender med besværlige strengkonverteringer, som kan bruge upassende formater osv. Det er problemet her.
- Du inviterer SQL-injektionsangreb
- Du blander kode og data, hvilket gør det sværere at læse koden og sværere at kontrollere dataene
Du vil have noget 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
}
Hvis Des.despdate
er ikke allerede en passende datatype, bør du ændre det...