-1

NVARCHARという名前の列がありますReceivingdate。その内容を現在の時刻と比較したいのですが、 を呼び出すとWHERE (Receivingdate < Getdate())、次のエラーが発生します。

nvarchar から datetime への変換により、範囲外の値が発生しました

C# から次の呼び出しを使用してデータを挿入します。

DateTime.Now.AddDays(ces).ToString("dd/MM/yyyy");

私は何が間違っているのだろうかと思っています。

4

2 に答える 2

3

間違っているのは、日付をNVARCHAR列に格納することです。やめてください。テーブルを修正し、DATEデータ型を使用してその列を作成します。このエラーは、ガベージデータがテーブルに入ることが原因で発生します。以下を使用してこれらの行を検索します。

SELECT Receivingdate FROM dbo.YourTable 
  WHERE ISDATE(ReceivingDate) = 0;

ここで、データ型を修正する前に、それらを修正または削除する必要があります。それで:

ALTER TABLE dbo.YourTable 
  ALTER COLUMN ReceivingDate DATE;

次に、挿入時に地域の文字列形式への変換を停止します。DateTimeまったく呼び出さずに、C#から値を挿入するだけ.ToString()です。表示したい時点を除いて、このプロセスのいずれかを使用して、日付を文字列に変換し、元に戻す必要がある理由はまったくありません。

于 2013-03-10T04:25:50.633 に答える
0

エラーは、文字列を日付と比較しようとしていることです。日付は数字です。フォーマットについて心配するのは、それらを表示するときだけです。

これまでに示したものについては、C# コードを次のように変更してください。

DateTime.Now.AddDays(ces).ToString("dd/MM/yyyy");

 DateTime.Today;

そして、あなたは大丈夫なはずです。

于 2013-03-10T04:07:37.313 に答える