如何通过在vb.net中写入qyeury从ms access中获取特定日期(不包括时间)的记录
我试图通过在vb.net windows应用程序中编写查询来从MS Access表中获取记录 表的DateTime列中包含以下数据如何通过在vb.net中写入qyeury从ms access中获取特定日期(不包括时间)的记录,vb.net,ms-access,Vb.net,Ms Access,我试图通过在vb.net windows应用程序中编写查询来从MS Access表中获取记录 表的DateTime列中包含以下数据 12/10/2016 12:50:25 PM 12/11/2016 12:50:29 PM 12/14/2016 12:50:29 PM 12/13/2016 12:49:29 PM 12/13/2016 12:51:29 PM 12/13/2016 12:51:55 PM 当我在vb.net中编写下面的
12/10/2016 12:50:25 PM
12/11/2016 12:50:29 PM
12/14/2016 12:50:29 PM
12/13/2016 12:49:29 PM
12/13/2016 12:51:29 PM
12/13/2016 12:51:55 PM
当我在vb.net中编写下面的查询时,我得到了零记录
SELECT * FROM Customer WHERE CDATE(INT(CreatedDate)) = #12/13/2016#
如何仅通过日期(不包括时间)获取记录 例如
Dim date = Date.Today
Dim command As New OleDbCommand("SELECT * FROM Customer WHERE CreatedDate >= @StartDate AND CreatedDate < @EndDate", connection)
With command.Parameters
.Add("@StartDate", date)
.Add("@EndDate", date.AddDays(1))
End With
您也可以使用BETWEEN运算符,但我永远记不起限制是包含的还是独占的
编辑:
虽然任何要求您使用文本构建SQL的系统都是一个糟糕的系统,但需求就是需求。也就是说,原理仍然完全相同,任何不能在自己的代码中使用演示原理的人都会从一开始就遇到麻烦。无论如何,以下是不使用参数的方法:
Dim date = Date.Today
Dim sql = String.Format("SELECT * FROM Customer WHERE CreatedDate >= #{0:M/dd/yyyy}# AND CreatedDate < #{1:M/dd/yyyy}#",
date,
date.AddDays(1))
正如您所看到的,原理是完全相同的,所有的变化都是如何将日期输入SQL。它们都包含在内。@bnil re:无法使用命令参数-请编辑您的问题以解释原因。我正在使用DB类的对象。。。我无法访问SQL命令。。。我只能发送文本格式的查询……也许你应该首先考虑提供所有相关信息,以避免人们浪费时间用不恰当的答案。我们无法理解你的想法,所以如果你不能做应该做的事情,那么告诉我们。我将编辑我的答案,如果您没有对您的需求保密,我将首先提供答案。它应该与SELECT*FROM Customer(其中INTCreatedDate=12/13/2016)一起使用。我已经尝试过了,它没有问题,如果我将>sign SELECT*FROM Customer(其中INTCreatedDate>=12/13/2016)放在上面,它就会工作。。。所以我必须在查询中进行更改…然后发生了其他事情。INTCreatedDate=12/13/2016将返回三条记录。也许您正在使用DateTime2和旧的SQL Server驱动程序。如果是,请更改为DateTime或使用更新的本机SQL Server驱动程序版本10或11。