0

SQL Server 2000 と従来の ASP を vb で実行しています。start という名前の日時と end という名前の日時を受け入れるストアド プロシージャに頭を悩ませています。今日の日付から 1 週間を引いた日付を date1 としてストアド プロシージャに送信しようとしましたが、今日の日付を送信することさえできませんでした。

If date1 = "" Then
    date1 = now() 'eventually want to subtract 7 days from this
End If
If date2 = "" Then
    date2 = now()
End If

日付を除く他の入力パラメーターに対してストアド プロシージャを正常に実行しています。ここに開始日を追加しています。

    .Parameters.Append cmdTmp2.CreateParameter("start",135,1,,date1) '129=adChar, 1=adParamInput
    .Parameters.Append cmdTmp2.CreateParameter("end",135,1,,date2) '129=adChar, 1=adParamInput

エラーが発生しました: データ型 char を datetime に変換中にエラーが発生しました

4

2 に答える 2

0

DateTime.Now今日の日付と時刻を返します。Date.Today は今日の日付を返します。 DateAdd(DateInterval.Day,-7, Date.Today)今日の7日前に行います。

編集: ストアド プロシージャはどのような種類のパラメーターを期待していますか?

于 2012-09-20T17:59:43.667 に答える
0

Dateメソッドに実際のオブジェクトを渡す必要がありますCreateParameterdate1andを宣言するときに型を指定しないため、date2任意の型のオブジェクトを参照でき、複雑になります。最も簡単な方法は、それらを型変数として宣言することDateです。たとえば、次のようになります。

Dim date1 As Date
Dim date2 As Date
If date1 = Date.MinValue Then
    date1 = Date.Today.AddDays(-7)
End If
If date2 = Date.MinValue Then
    date2 = Date.Today
End If

そうすれば、うまくいくはずです。何らかの理由でそれらを基本オブジェクト型にする必要がある場合は、それらDateを渡す前に、それらを解析するか、(型に応じて) 適切なオブジェクトにキャストする必要があります。

于 2012-09-20T18:18:41.110 に答える