我正在使用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转换为datetime时出错
答案 0 :(得分:0)
DateTime.Now
会给出今天的日期和时间。 Date.Today将给出今天的日期。 DateAdd(DateInterval.Day,-7, Date.Today)
会在今天前7天做。{/ p>
编辑:您的存储过程期望什么类型的参数?
答案 1 :(得分:0)
您需要将实际的Date
对象传递给CreateParameter
方法。由于在声明date1
和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
对象(取决于它们的类型)。