0

我正在尝试将日期和时间存储到 sql server 中,但出现错误。

    private void button1_Click(object sender, EventArgs e)
    {
        string d = DateTime.Now.ToShortDateString();
        string t = DateTime.Now.ToShortTimeString();
        cmd.CommandText = "insert into transaction values("+label9.Text+",'"+d+"','"+t+"');";
        cmd.Connection = con;
        con.Open();
        int x= cmd.ExecuteNonQuery();
        MessageBox.Show("Attendance recorded succesfully");   
    }      

注意:我为 sql server 中的日期和时间字段提供了数据类型为 varchar

4

3 回答 3

0

使用 [交易] 而不是交易

于 2012-04-11T10:27:35.527 回答
0
private void button1_Click(object sender, EventArgs e)
    {
        string d = DateTime.Now.ToString("dd/MM/yyyy");
        string t = DateTime.Now.ToString("hh:mm:ss tt");
        cmd.CommandText = "insert into transaction values("+label9.Text+",'"+d+"','"+t+"');";
        cmd.Connection = con;
        con.Open();
        int x= cmd.ExecuteNonQuery();
        MessageBox.Show("Attendance recorded succesfully");   
    }     

其次,您也可以尝试使用 SQL 的 GetDate() 函数来插入日期和时间而不会出错。

对于仅日期部分,您有:

 SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

日期部分的优点:

  • 不需要 varchar<->datetime 转换

  • 无需考虑语言环境

时间部分:

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))

如果有人可以使用 Convert 和 Locale 帮助获取 TimePart,我会很高兴。

于 2012-04-17T07:29:43.553 回答
0
private void button1_Click(object sender, EventArgs e)
    {
        string timeString = "11/12/2009 13:30:00.000";
        IFormatProvider culture = new CultureInfo("en-US", true);
        DateTime dateVal = DateTime.ParseExact(timeString, "dd/MM/yyyy HH:mm:ss.fff", culture);
        cmd.CommandText = "insert into transaction values(" + label9.Text + ",'" + dateVal + "');";
        cmd.Connection = con;
        con.Open();
        int x = cmd.ExecuteNonQuery();
        MessageBox.Show("Attendance recorded successfully");
    }
于 2012-04-11T10:54:02.563 回答