Robisz błąd, próbując na początek umieścić wartość bezpośrednio w zapytaniu SQL. Użyj sparametryzowanego SQL i określ wartość jako DateTime
i zakładając, że tabela bazy danych to również używając pola daty/daty/godziny (które powinno być), powinno być dobrze.
Należy unikać dołączania wartości bezpośrednio do kodu SQL z trzech powodów:
- Skończysz z kłopotliwymi konwersjami ciągów, które mogą używać nieodpowiednich formatów itp. To jest tutaj problem.
- Zapraszasz ataki typu SQL injection
- Mieszasz kod i dane, co utrudnia odczytanie kodu i sprawdzenie danych
Chcesz coś takiego:
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
}
Jeśli Des.despdate
nie jest już odpowiedni typ danych, należy go zmienić...