VB.Net和存储过程的DateTime问题

时间:2012-09-20 17:53:11

标签: sql-server vb.net

我正在使用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时出错

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您需要将实际的Date对象传递给CreateParameter方法。由于在声明date1date2时未指定类型,因此它们可以引用任何类型的对象,这会使事情变得复杂。最简单的方法是将它们声明为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对象(取决于它们的类型)。