0

我正在使用 vb 运行 SQL Server 2000 和经典 asp。我对一个接受名为 start 和一个名为 end 的日期时间的存储过程感到非常头疼。我试图将今天的日期减去一周作为 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 转换为日期时间时出错

4

2 回答 2

0

DateTime.Now会给出今天的日期和时间。Date.Today 将给出今天的日期。 DateAdd(DateInterval.Day,-7, Date.Today)会在今天前 7 天做。

编辑:您的存储过程需要什么类型的参数?

于 2012-09-20T17:59:43.667 回答
0

您需要将实际Date对象传递给该CreateParameter方法。date1由于在声明and时没有指定类型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 回答