Te equivocas al intentar incluir un valor directamente en tu consulta SQL para empezar. Use SQL parametrizado y especifique el valor como DateTime
, y asumiendo que la tabla de su base de datos es también usando un campo de fecha/fechahora (que debería ser), debería estar bien.
Debe evitar incluir valores directamente en su SQL por tres razones:
- Terminarás con conversiones de cadenas problemáticas que pueden usar formatos inapropiados, etc. Ese es el problema aquí.
- Está invitando a ataques de inyección SQL
- Estás mezclando código y datos, lo que hace que sea más difícil leer el código y verificar los datos
Quieres algo como:
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
}
Si Des.despdate
no es ya es un tipo de datos adecuado, debe cambiar eso...