将vb变量传递给ASP.NET中的SQL语句

时间:2014-01-20 06:33:19

标签: asp.net sql vb.net

我努力确保无法在任何地方找到答案,所以如果重复就道歉。

我想使用WHERE子句将SQL Server语句的数据输出过滤到不到两周的项目。我已成功设法编写.vb代码以获取两周前的日期,但是我在尝试将此日期插入到.aspx页面的语句中时遇到了麻烦。

两周前计算日期的代码如下:

Protected dateBuffer As String = lastFortnight().ToString("dd/MM/yyyy")

Function lastFortnight() As DateTime       
    Dim retVal As DateTime = DateTime.Now.AddDays(-14)
    Return retVal
End Function

如果使用<%= dateBuffer%>

在我的.aspx页面上调用,则返回2014年1月6日(截至今天)的日期

但是,如果我尝试将其插入到我的SQL语句中以过滤输出,如下所示:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:Database SQL 20130905ConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:Database SQL 20130905ConnectionString.ProviderName %>" 

    SelectCommand="SELECT [ReqNumber], [ApprovedDate], [Approved] FROM [RequisitionDetails] WHERE ([RequestDate] &gt;= ?)">
    <SelectParameters>
        <asp:Parameter DefaultValue='<%=dateBuffer %>' Name="RequestDate" Type="DateTime" />
    </SelectParameters>
</asp:SqlDataSource>

我一直都会收到错误

异常详细信息:System.FormatException:String未被识别为有效的DateTime。

我一天中大部分时间都在寻找如何解决这个问题,而且我仍然没有比4小时前更近。如果我犯了任何愚蠢的错误,请告诉我...当涉及到这些东西时,我是一个完全新手,这是我第一次使用.aspx,.vb和SQL服务器。 / p>

1 个答案:

答案 0 :(得分:0)

SQL的日期格式与.NET DateTime数据类型不同,这就是您收到格式错误的原因。有一些方法可以转换,例如使用SqlDateTime结构 - How can I convert a .Net Datetime to a T-SQL Datetime

但是,在您的情况下,将日期传递给SQL语句(或存储过程)并在SQL中使用DateDiff / DateAdd组合可能不是更简单吗?