查询不仅基于日期时间字段中的日期返回所有记录

时间:2019-12-05 14:49:16

标签: sql vb.net ms-access

我将Date-Time值存储在一个字段中,作为POS程序的一部分。要查看某一天的销售额,我需要能够仅基于日期(不包括时间)来检索所有记录。我找到了一些我认为可行的代码,但我无法以一位数的天返回任何记录... 12/5/2019 vs 11/26/2019。这是我的代码。 TimeStamp.text包含一个日期,例如12/4/2019 6:33:00 PM。我正在连接到访问数据库。

Private Sub TimeStamp_DoubleClick(sender As Object, e As EventArgs) Handles TimeStamp.DoubleClick
    Dim dt As Date = Date.Parse(TimeStamp.Text)
    Dim dateString = dt.ToShortDateString()
    SalesBindingSource.Filter = "DateStamp = '" & dateString & "'"
    SalesBindingSource.Sort = "SalesID DESC"
    Infobox.Text = "All records from " & dateString
    GetTax()
    TotalRows()
End Sub

2 个答案:

答案 0 :(得分:0)

也许期望是两位数的日子。

customConfirm(function() { 
    // Put some stuff you want to do 
}); 

答案 1 :(得分:0)

您真的不想开始将日期值转换为字符串,而搞砸了数据引擎将某些字符串视为日期的“希望”。

在ACE / JET中,有一个内置功能可以去除时间部分。

例如:

Select ID, CustID, DATEVALUE(PurchaseDate) as Pdate from tblInvoices

如果您要在上面查询?然后使用正确格式的日期:

SELECT ID, CustID, DATEVALUE(PurchaseDate) AS Pdate from tblInvoices
WHERE Pdate = #12/06/2019#

因此可以在查询中使用Access DATEVALUE()函数。但是,请记住,以上不能使用高速索引。那么,如果桌子很大?您想要这个:

SELECT ID, CustID, PurchaseDate from tblInvoices
WHERE PurchaseDate >= #12/06/2019# AND PurchaseDate < #12/07/2019#

因此,如果表不是太大,或者您有其他限制表索引的数据提取条件,则应使用DATEVALUE()去除时间部分。但是,对于大表,这会导致索引丢失,并且将导致全表扫描。因此,最好发送数据标准的整个“范围”。