【发布时间】:2020-02-11 18:26:26
【问题描述】:
我有简单的查询
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:
如果我使用 'Greater Than' && 'Less Than' 运算符,而不是 between 运算符:
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#
比它从 1 月 7 日获得 3 条记录,从 2 月 11 日获得 2 条记录,但仍然是 1 月 15 日的一条记录(请参阅之前的实际数据快照。
【问题讨论】:
-
原始数据是什么样的?
-
如果 TransactionDate 的数据类型是 Date/Time 删除函数 Format 并比较 TransactionDate。
-
@forpas 似乎这个 Format 函数搞砸了,删除该格式后,它工作正常。
-
格式化一个日期,它不再是一个日期,它是一个字符串。 BETWEEN AND 预计日期。
-
请注意,如果 TransactionDate 包含时间部分,则
#11-Feb-2020#将被解释为午夜,因此它将忽略一天中的其余时间(解决方案:使用< #12-Feb-2020#或更确切地说是< #2020-02-12#)