MSAccess BETWEEN AND函数给出范围之外的日期

lev*_*898 1 sql ms-access

我是MS Access的新手,在申请日期时遇到使用BETWEEN AND功能的问题.

SELECT EmployeeID, FirstName, LastName, StartDate
FROM Chefs
WHERE StartDate BETWEEN #01/12/2015# AND #31/12/2015#;
Run Code Online (Sandbox Code Playgroud)

上面给出了具有正确日期的条目以及具有日期之前的日期的条目,但不是之后.

改为

WHERE StartDate BETWEEN #30/11/2015# AND #31/12/2015#;
Run Code Online (Sandbox Code Playgroud)

给了我正确的答案.有人能告诉我为什么第一个查询不起作用?

编辑:使用日期格式dd/mm/yyyy.DataType是具有常规日期格式的日期/时间.

Gus*_*tav 5

您遇到问题的原因是,如果mm/dd/yyyy格式有意义,Access SQL会首先尝试.2015年12月1日确实(读作2015-01-12),而2015年11月30日则没有.接下来尝试dd/mm/yyyy将于2015年11月30日成功(读作2015-11-30).最后,它将尝试yyyy/mm/dd.

因此,汉斯写道:

许多有经验的Access开发人员默认使用yyyy-mm-dd以避免歧义.

然而:

如果你不喜欢,dd mmm yyyy应该可以工作.

注定要在任何非英语环境中失败,因为mmm本地化.

所以坚持使用ISO序列yyyy-mm-dd或使用DateSerial:

WHERE StartDate BETWEEN DateSerial(2015, 12, 1) AND DateSerial(2015, 12, 31);
Run Code Online (Sandbox Code Playgroud)