当我尝试运行此代码时,我收到此错误:
conversion failed when converting date and/or time from character string
我在这一行得到错误:
g_muallak_tarihi = DateTime.Parse(row_muallakt["Muallak_tarihi"].ToString());
要存储日期和时间或仅日期的值,我使用DateTime数据类型。我不知道该怎么做。你有什么想法吗?
这是我的代码:
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());
}
}
答案 0 :(得分:2)
假设Muallak_tarihi
被定义为DATETIME
列(应该就像它所持有的那样),所有这些与转换为字符串和从字符串转换的工作都是不需要。
您可以直接使用GetDateTime
数据阅读器来获取它,或者只是转换值:
g_muallak_tarihi = row_muallakt["Muallak_tarihi"] as DateTime;
此外,您使用的参数(@parameter
) 也应该是DATETIME
- 并且只是直接传入,而不是使用ToString
:< / p>
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter",g_listetarihi);
答案 1 :(得分:-1)
使用string.Format
da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter", string.Format("{0:yyyy-MM-dd}",g_listetarihi.ToString());
MSDN DateTime格式:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx