如何确保在 Access 查询中过滤日期时选择正确数量的记录:
SELECT ID, REF, SalesDate, DCount("ID","tblRecords"," Ref='" & [Ref] & "' AND [SalesDate]=#" & format([SalesDate],"yyyy/mm/dd") & "#") as EXPR1 from tblCurrent
如果它不会被误解,例如 28-04-12,它会选择日期,但如果它是 04-06-12,它不会选择它,因为它假设它是错误的方式。
请注意,此查询不是即时创建的,也不是从表单等生成的...
最佳答案
我在 VBA 中使用 yyyy/mm/dd 作为日期:
#" & Format([SalesDate],"yyyy/mm/dd") & "#"
或参数,用于构建查询。
编辑附加信息
看你用的是SQL server,我建议你用派生表,你会发现这样更快,例如:
SELECT dbo_Table_1.ADate, ACount FROM dbo_Table_1
LEFT JOIN (SELECT a.ADate,Count(*) As ACount
FROM dbo_Table_1 As a GROUP BY a.ADate) b
ON dbo_Table_1.Adate=b.ADate
编辑重新讨论
SELECT * FROM dbo_vwRecordsCurrent As t
LEFT JOIN (
SELECT a.OpptyIncentiveModifiedDate, a.DataSetID, Count(*) AS ACount
FROM dbo_vwRecordsHistorical AS a
WHERE a.OpportunityIgnored = True
GROUP BY a.OpptyIncentiveModifiedDate, a.DataSetID) AS h
ON t.OpptyIncentiveModifiedDate = h.OpptyIncentiveModifiedDate
AND t.DataSetID = h.DataSetID
我给你的表起了别名,因为名字很长,所以对我来说,在外部 sql 上使用别名更具可读性。它们在内部sql中是必不可少的。使用现有表的名称为派生表起别名不是一个好主意。
关于ms-access - 您如何在 MS Access 查询中格式化日期以防止美国/英国问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11609944/