Anda salah dengan mencoba memasukkan nilai secara langsung dalam kueri SQL Anda untuk memulai. Gunakan SQL berparameter dan tentukan nilai sebagai DateTime
, dan dengan asumsi tabel database Anda juga menggunakan bidang tanggal/waktu (yang seharusnya), Anda akan baik-baik saja.
Anda harus menghindari memasukkan nilai secara langsung dalam SQL Anda karena tiga alasan:
- Anda akan berakhir dengan konversi string yang merepotkan yang dapat menggunakan format yang tidak sesuai, dll. Itulah masalahnya di sini.
- Anda mengundang serangan injeksi SQL
- Anda mencampur kode dan data, yang membuat lebih sulit untuk membaca kode dan lebih sulit untuk memeriksa data
Anda menginginkan sesuatu seperti:
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
}
Jika Des.despdate
bukan sudah menjadi tipe data yang sesuai, Anda harus mengubahnya...