我将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
答案 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()去除时间部分。但是,对于大表,这会导致索引丢失,并且将导致全表扫描。因此,最好发送数据标准的整个“范围”。