Sql 用于日期比较的运算符之间在MS Access DB查询中工作不正常

Sql 用于日期比较的运算符之间在MS Access DB查询中工作不正常,sql,ms-access,Sql,Ms Access,我有一个简单的疑问 Select * from myTable tran Where tran.Party = 13 AND Format(TransactionDate,'dd-mmm-yyyy') BETWEEN #07-Jan-2020# AND #11-Feb-2020# 它只返回一条交易日期为2020年1月7日的记录,而不返回介于这两个日期之间的其他记录 更新 更新2: 如果使用“大于”&&“小于”运算符,则不使用中间运算符: Select * from Cylinde

我有一个简单的疑问

Select *
from myTable tran

Where  tran.Party = 13  
AND  
Format(TransactionDate,'dd-mmm-yyyy') BETWEEN #07-Jan-2020# AND #11-Feb-2020# 
它只返回一条交易日期为2020年1月7日的记录,而不返回介于这两个日期之间的其他记录

更新

更新2:

如果使用“大于”&&“小于”运算符,则不使用中间运算符:

Select * from CylinderTransactions tran

Where  tran.Party = 13  AND
Format(TransactionDate,'dd-mm-yyyy') >= #07-Jan-2020# 
AND Format(TransactionDate,'dd-mm-yyyy') <= #11-Feb-2020# 

然后它会得到3条记录,1月7日1条,2月11日2条,但仍有1月15日的一条记录。请参考之前的实际数据快照。

根据日期值本身进行筛选,不要使用文字月份:

Where  
    tran.Party = 13  
    AND
    TransactionDate BETWEEN #2020/01/07# AND #2020/02/11# 

原始数据是什么样子的?如果TransactionDate的数据类型是Date/Time,请删除函数格式并比较TransactionDate。@forpas似乎此格式函数出了问题,删除该格式后,其工作正常。格式化日期后,它不再是日期,而是字符串。介于和预期日期之间。请注意,如果TransactionDate包含时间部分,则2020年2月11日将被解释为午夜,因此它将忽略当天剩余时间的解决方案:使用<2020年2月12日或<2020年2月12日