将类似日期的字符串插入数据库日期列

时间:2017-01-27 06:26:03

标签: c# mysql sql database date

我正在插入一个看起来像日期的字符串(23.02.2015) 从datagridview到我的本地数据库日期列。

我知道我需要转移我的字符串" 23.02.2015"到2015年2月23日并将其转换为日期变量,然后将其插入我的数据库日期列,但我不知道如何在我的代码中执行此操作:

private void button3_Click(object sender, EventArgs e)
    {

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                string constring = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\john\Documents\Visual Studio 2015\Projects\Project\Project\DB.mdf;Integrated Security=True";
                using (SqlConnection con = new SqlConnection(constring))
                {

                    using (SqlCommand cmd = new SqlCommand("INSERT INTO ResultsTable VALUES(@Date, @TagNumber)", con))
                    {
                        cmd.Parameters.AddWithValue("@Date", row.Cells["Exposure Date"].Value);
                        cmd.Parameters.AddWithValue("@TagNumber", row.Cells["Device #"].Value);

                        cmd.ExecuteNonQuery();     
                    }


                }
            }

        MessageBox.Show("Records inserted.");

    }

简而言之 - 我有一个用于转换字符串的问题,例如" 23.05.2014"到类似23/05/2014的日期类型,在我的代码中将它插入我数据库中的日期列。

2 个答案:

答案 0 :(得分:1)

如果您的字符串日期始终采用给定格式,这可能会为您提供帮助。 DateTime.ParseExact使用指定的格式和特定​​于文化的格式信息,将指定的日期和时间字符串表示形式转换为其DateTime等效形式。字符串表示的格式必须与指定的格式完全匹配。

string smdt = row.Cells["Exposure Date"].Value;
//This is the string format which is going to parse the Date
string format = "dd.MM.yyyy";
DateTime dt = DateTime.ParseExact(smdt, format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

然后

cmd.Parameters.AddWithValue("@Date", dt);

答案 1 :(得分:-1)

请尝试以下代码:

string stringDate = "23.02.2015";  // Hold your string date here (row.Cells["Exposure Date"].Value)
DateTime date = DateTime.ParseExact(stringDate, "dd.MM.yyyy", CultureInfo.InvariantCulture);

这会将您的字符串日期(stringDate)转换为日期时间(日期)对象,您可以将此日期对象传递给存储过程参数。

我相信,你总是以这种(“dd.MM.yyyy”)格式获得字符串日期。否则,您需要根据字符串格式进行更改。

如果有帮助,请告诉我。