0

日付と時刻をSQLサーバーに保存しようとしていますが、エラーが発生します。

    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サーバーの日付と時刻のフィールドに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 に答える