When I try to run this code, I’m receiving this error:
conversion failed when converting date and/or time from character string
I get the error on this line:
g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString());
To store values that are both dates and times or only dates, I use the DateTime data type. I’m not sure what to do. Do you have any ideas?
Here is my code:
public void cs_hmuallak()
{
string cs_hmuallak = null;
SqlConnection cnn;
cs_hmuallak = @"Data Source= .\SQLEXPRESS; Initial Catalog=mydb;Integrated Security= True";
cnn = new SqlConnection(cs_hmuallak);
try
{
cnn.Open();
{
SqlDataAdapter da_muallakt = new SqlDataAdapter("SELECT M.Muallak_tutari FROM Muallak M INNER JOIN Hasar H ON M.Hasar_no= H.Hasar_no INNER JOIN Police P ON p.Police_no=h.Police_no where p.Acenta_kodu='"+cbx_acenta.Text+"' and p.Brans_kodu='"+cbx_brans.Text+"' and M.muallak_tarihi<=(Select M.muallak_tarihi from muallak M where M.muallak_tarihi=(select max(muallak_tarihi) from muallak where muallak_tarihi<=@parameter)) and M.Muallak_tarihi=(SELECT max(M.Muallak_tarihi) FROM Muallak M INNER JOIN Hasar H ON M.Hasar_no= H.Hasar_no INNER JOIN Police P ON p.Police_no=h.Police_no where p.Acenta_kodu='"+cbx_acenta.Text+"' and p.Brans_kodu='"+cbx_brans.Text+"' and M.muallak_tarihi<=(Select M.muallak_tarihi from muallak M where M.muallak_tarihi=(select max(muallak_tarihi) from muallak where muallak_tarihi<=@parameter)) ) ", cnn);
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter",g_listetarihi.ToString("yyyy-mm-dd"));
DataTable table_muallakt = new DataTable();
da_muallakt.Fill(table_muallakt);
foreach (DataRow row_muallakt in table_muallakt.Rows)
{
if (row_muallakt["Muallak_tutari"] != DBNull.Value)
{
if (row_muallakt["Muallak_tarihi"] != DBNull.Value)
{
g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString());
g_muallak_tutari = int.Parse(row_muallakt["Muallak_tutari"].ToString());
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Assuming that
Muallak_tarihiis defined as aDATETIMEcolumn (which is should be as that’s what it is holding), all this work with converting to and from strings is not needed.You can simply use
GetDateTimedirectly with the data reader in order to get it, or simply cast the value:Additionally, the parameter you are using (
@parameter) should also be aDATETIME– and simply passed in directly, instead of usingToString: