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

时间:2016-05-02 16:59:36

标签: sql ms-access

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

SELECT EmployeeID, FirstName, LastName, StartDate
FROM Chefs
WHERE StartDate BETWEEN #01/12/2015# AND #31/12/2015#;

以上为我提供了正确日期的条目以及在范围之前的日期条目,但不是之后。

更改为

WHERE StartDate BETWEEN #30/11/2015# AND #31/12/2015#;

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

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

1 个答案:

答案 0 :(得分: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);
相关问题