如何在MS Access Queries中设置日期格式以防止美国/英国问题



在Access Query中筛选日期时,如何确保获得正确数量的记录:

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中是必不可少的。用现有表的名称对派生表进行别名不是一个好主意。

最新更新