0

これはフォーラムにまつわる非常に一般的な問題であることは認識していますが、ここで何が間違っていたのかわかりません。

次のような「現在の」テーブルがあります。

ID(uniqueidentifier)
Name(nvarchar max)
FileName(nvarchar max)
FileVersion(smallint)
CurrentVersionDate(datetime)

CurrentVersionDate は、SQLserver 内で GETDATE() 関数を使用して入力されます。

ユーザーが私の Web サイトで [ファイルの作成] をクリックすると、このテーブルの詳細が [履歴] テーブルに転送されます。そのため、ストアド プロシージャを使用して * 'Current' から詳細を選択し、各値を変数として保存します (ビジュアル スタジオ プロジェクトで vb.net を使用しています)。これが問題なので、日付変数を表示します。これを「日付」変数として保存しています:

Dim dDate as Date
dDate = dr("CurrentVersionDate")

次に、これらの変数を別のストアド プロシージャに送信して、「履歴」テーブルに入力します。

Execute sp_InsertHistory '" & ID & "','" & strName& "','" & strFile & "','" & intVersion & "','" & dDate & "'"

ストアド プロシージャで日付変数を次のように宣言します。

@Date datetime,

挿入ステートメントで:

INSERT INTO History
(ID, Name, FileName, FileVersion, VersionDate)
VALUES
(@ID, @Name, @FileName, @FileVersion, @Date)

「履歴」テーブルには、「現在」テーブルと同じセットアップがあります。コードをステップ実行すると、次のエラーがキャッチされます。

Error converting data type varchar to datetime

確かに変数は varchar ではありませんか? たとえそうであったとしても、SQL が与えた日付値を選択しているだけなので、文字列は SQLserver の正しい形式であることは間違いありません! 何かご意見は?

4

2 に答える 2