关于c#:将类似日期的字符串插入数据库日期列

inserting a string that looks like a date to a database date column

本问题已经有最佳答案,请猛点这里访问。

我让Problam插入一个看起来像日期的字符串(2015年2月23日)从DataGridView到我的本地数据库日期列。

我知道我需要将字符串"23.02.2015"转换为23/02/2015,并在将其插入数据库日期列之前将其转换为日期变量,但我不知道如何在代码内执行此操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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.");

    }

简而言之,我有一个problam可以将类似"23.05.2014"的字符串转换为类似"23/05/2014"的日期类型,以便将它插入到我的代码中的数据库的日期列中。


如果字符串日期总是以给定的格式,那么这可能对您有好处。date time.parseexact使用指定的格式和区域性特定的格式信息,将日期和时间的指定字符串表示形式转换为其日期时间等效形式。字符串表示形式的格式必须与指定的格式完全匹配。

1
2
3
4
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);

然后

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


请尝试以下代码:

1
2
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)转换为日期时间(Date)对象,您可以将此日期对象传递给存储过程参数。

我相信,你总是得到字符串日期的格式("dd.mm.yyyy")。否则,您将需要根据字符串格式更改它。

如果这有帮助,请告诉我。