2

現在の日付と時刻の値を保存するためのコードを作成しました。一昨日、まさに私が望んでいたとおりに機能していました。しかし、今日はエラーが表示されます"Arithmetic overflow error converting expression to data type datetime. The statement has been terminated."

どんな体でも私を助けることができますか?ここに私のコードがあります、

protected void Button1_Click(object sender, EventArgs e)
{
    con.Open();
    string q;
    q = "insert into tbl_MR(RequirementFor,Category,MRNO,CreatedBy,CreatedDate)values(@rf,@cat,@mr,@cb,@cd)";
    SqlCommand cmd = new SqlCommand(q, con);
    cmd.Parameters.AddWithValue("@rf", CCddl.SelectedItem.Text);
    cmd.Parameters.AddWithValue("@mr", TextBox1.Text.Trim());
    cmd.Parameters.AddWithValue("@cat", TextBox3.Text.Trim());
    cmd.Parameters.AddWithValue("@cb", Session["loginid"].ToString());
    string cd1, date1;
    cd1 = System.DateTime.Today.ToShortDateString();
    date1 = Convert.ToDateTime(cd1).ToString("dd/MM/yyyy");
    cmd.Parameters.AddWithValue("@cd", date1.ToString());
    cmd.ExecuteNonQuery();
    string alertmessage = "";
    alertmessage = "Component Details Saved";
    this.CreateMessageAlert(this, alertmessage, "alertKey");
    con.Close();  
}
4

3 に答える 3

3

You don't need to convert a date to a string in order to send it to SQL Server.

Instead of all this:

string cd1, date1;
cd1 = System.DateTime.Today.ToShortDateString();
date1 = Convert.ToDateTime(cd1).ToString("dd/MM/yyyy");
cmd.Parameters.AddWithValue("@cd", date1.ToString());

Just do this:

 cmd.Parameters.AddWithValue("@cd", DateTime.Today);
于 2012-06-14T03:47:15.590 に答える
1

date1フォーマットをyyyy/MM/ddまたはに変更しますMM/dd/yyyy

昨日は 2012 年 6 月 12 日でした。実際にデータベースに挿入されたのは、おそらく 2012 年 12 月 6 日でした (12/06 対 06/12)。今日は 13 日ですが、13 番目の月がないため、例外が発生します。

于 2012-06-14T03:42:29.400 に答える
0

文化情報の不一致があるようです。日付の ToString() メソッドを別の形式に変更してみてください。

cmd.Parameters.AddWithValue("@cd", System.DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture));
于 2012-06-14T03:43:07.043 に答える