【发布时间】:2015-06-06 03:21:45
【问题描述】:
我正在尝试将参数从下拉框中发送到 SQL 服务器脚本,该脚本将更改 DATEADD() 的参数 2:
SELECT DISTINCT Orders.Order_ID, Customers.First_Name, Orders.Order_Date, Payment_Details.Card_Name, Payment_Details.Card_Type, Payment_Details.Customer_ID
FROM Orders INNER JOIN
Customers ON Orders.Customer_ID = Customers.Customer_ID INNER JOIN
Payment_Details ON Orders.Payment_ID = Payment_Details.Payment_ID
WHERE (Orders.Order_Date < CONVERT(Varchar(20), DATEADD(d, CONVERT(dec, @DATE), { fn CURDATE() })));
然后这将使用结果填充网格视图:
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim OrderHistorySearch As New Allin1IDTableAdapters.OrdersTableAdapter
GridView1.DataSource = OrderHistorySearch.GetDataByOrderHistory(Me.DropDownList1.Text)
GridView1.DataBind()
End Sub
End Class
但是我收到一条错误消息:
将参数值从字符串转换为日期时间失败。
和
字符串未被识别为有效的日期时间。
但是,在使用 SQL Server 向导时,查询完全正常。
我尝试转换数据类型,但似乎没有任何效果。
我该如何解决我的问题?
【问题讨论】:
-
您是在代码中构建 SQL 语句还是直接从 sql-server 运行的 SQL 语句?
-
您将什么字符串传递给 DATE 参数? { fn CURDATE() } 应该是什么?
-
SQL 语句直接从 sql-server 工作。
-
传递的字符串是 1,2,3,5,10,15。取决于在下拉列表中选择的选项。 CURDATE 是从 SQL 服务器向导自动添加“{fn}”的当前日期。
标签: sql-server vb.net visual-studio-2010 dateadd