我试图通过在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中编写以下查询时,我得到零记录。
SELECT * FROM Customer WHERE CDATE(INT(CreatedDate)) = #12/13/2016#
如何通过日期获取记录,不包括时间?
答案 0 :(得分:2)
E.g。
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。