0

最初はnullに設定されているデータベースの日付を更新しようとしています。日付に使用されるデータ型はnvarchar(50).

ncharSQL Server で, date,データ型も試しましvarchar(50)たが、更新すると次のようなエラーが表示されます。

文字列から日時を変換する際に変換に失敗しました。

どうすればこれを取り除くことができますか?

dd.tostring("D);

そしてそれは機能していません。

SqlCommand cmd = new SqlCommand("update barcode set intime=@time,date='@date' where bcd=@bcd", con);
cmd.Parameters.Add("@cc", SqlDbType.NChar, 20).Value = c;
cmd.Parameters.Add("@bcd", SqlDbType.NChar, 20, "bcd").Value = textBox1.Text;
DateTime dd = DateTime.Now;

String ss, sss;
ss = dd.ToString("t");
sss = dd.ToString("d");

cmd.Parameters.Add("@time", SqlDbType.NVarChar, 50, "intime").Value = ss;
cmd.Parameters.Add("@date", SqlDbType.Date, 50, "date").Value = sss;
cmd.ExecuteNonQuery();
4

2 に答える 2

1

なぜこれに文字列パラメーターを使用したいのか、日付と時刻の値をデータベースに送信する前にフォーマットを気にするのか、私にはわかりません。いずれにせよ、SQL Server も時間を知ることができるのに、なぜアプリにこれを行わせるのでしょうか? と列CURRENT_TIMESTAMPの両方にデフォルト値を設定することで(挿入時にそれらを指定する必要さえありません)、実際にこれらの列を更新する必要がある場合は更新時にこれらすべてをバイパスできます。intimedate

UPDATE dbo.barcode 
  SET intime = CURRENT_TIMESTAMP,
      [date] = CURRENT_TIMESTAMP
  WHERE bcd = @bcd;
于 2013-02-20T13:49:47.960 に答える
0

を一重引用符で囲むためです@date。パラメータは一重引用符で囲んではなりません。それを削除すると、機能します。

UPDATE barcode 
SET    intime = @time,
       date = @date 
WHERE  bcd = @bcd

もう1つ、日付の形式はそのままにしておきます。投影時に日付のみを変換 (選択)

于 2013-02-20T13:45:18.113 に答える