0

このコードを実行しようとすると、次のエラーが発生します。

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());
    }
}       
4

2 に答える 2

2

それが列Muallak_tarihiとして定義されていると仮定すると(これは、それが保持しているものである必要があります)、文字列への変換および文字列からの変換に関するこのすべての作業は必要ありません。DATETIME

GetDateTimeデータリーダーを直接使用して取得するか、値をキャストするだけです。

g_muallak_tarihi = row_muallakt["Muallak_tarihi"] as DateTime;

さらに、使用しているパラメーター(@parameter-である必要があり、 :DATETIMEを使用する代わりに、直接渡されます。ToString

da_muallakt.SelectCommand.Parameters.AddWithValue("@parameter",g_listetarihi);
于 2012-08-06T09:18:24.373 に答える
-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

于 2012-08-06T09:14:49.193 に答える