我是VS和.NET的新手。
我创建了一个新表单(在现有的VB.NET应用程序中),它将数据从SQL Server 2008数据库检索到DataGridView控件。
我还需要允许我的用户过滤显示的数据,所以我添加了两个Datetimepicker控件 - 一个用于开始日期,一个用于结束日期。
当用户点击“应用过滤器”按钮时,我想过滤网格客户端中的数据(仅用于复制和粘贴到MS Excel中)或使用两个日期作为过滤器重新查询数据库。
所以我在我的VB代码中构建了一个SQL查询字符串,如下所示:
sSQLQry = "SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]<= " & Me.dtPicketEndDate.Value.ToString & " AND [AuditDateTime]>= " & Me.dtPicketEndDate.Value.ToString
这给了我一个像这样的查询字符串:
SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]>= 01/03/2013 15:28:09 AND [AuditDateTime]>= 01/03/2013 15:28:09
(不出所料)不起作用......
所以我有点陷入困境 - 有人能指出我正确的方向或帮助我找到最好的方法。
顺便说一下,这是一个小应用程序,没有太多数据(最有可能排在几行),4或5个用户......不需要太担心大数据或性能答案 0 :(得分:1)
您需要在日期值周围加上引号,并在没有时间的情况下对其进行格式化吗?
WHERE [AuditDateTime]<='" & Me.dtPicketEndDate.Value.ToString("yyyy-MM-dd") & "'"
此外,BETWEEN
稍微优雅一点
http://msdn.microsoft.com/en-us/library/ms187922.aspx
答案 1 :(得分:1)
由于您只使用日期值而没有时间。您也可以使用
DtPicketEndDate.Value.date
而非格式化。