Sql 找不到最后日期时的MS Access查询日期范围

Sql 找不到最后日期时的MS Access查询日期范围,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我在MS Access 2013中有以下更新查询 UPDATE WXObs SET WXObs.SnowFlag = 1 WHERE (((WXObs.StationID) ="451409") And( (WxObs.ObsDate) Between #1/3/2003# AND #3/29/2003# OR (WxObs.ObsDate) Between #11/16/2003# AND #5/7/2004# OR (WxObs.ObsDate) Between #10/30/20

我在MS Access 2013中有以下更新查询

UPDATE WXObs SET WXObs.SnowFlag = 1     
WHERE (((WXObs.StationID) ="451409") And(
(WxObs.ObsDate) Between #1/3/2003# AND #3/29/2003# OR
(WxObs.ObsDate) Between #11/16/2003# AND #5/7/2004# OR
(WxObs.ObsDate) Between #10/30/2004# AND #4/30/2005#));
在未找到范围内的结束日期之前,此操作一直有效。例如,如果数据集中没有2004年7月5日,则更新将继续到下一个结束日期,在本例中为2005年4月30日。 我希望它在范围内的最后一天结束。例如,如果数据在2004年4月21日结束,则该字段将在2004年11月16日至5月7日之间更新。查询将从2004年10月30日开始再次更新


我尝试过 您希望在计算
选项之前,完全计算
之间的每个
部分,并且需要确保通过在括号中包围
之间的
表达式来完成计算,以保证计算顺序

这应该会纠正它(未测试,因为您没有提供创建测试用例所需的测试数据)

UPDATE WXObs SET WXObs.SnowFlag = 1     
WHERE 
  (WXObs.StationID ="451409") 
And
  (
   (WxObs.ObsDate Between #1/3/2003# AND #3/29/2003#) OR
   (WxObs.ObsDate Between #11/16/2003# AND #5/7/2004#) OR
   (WxObs.ObsDate Between #10/30/2004# AND #4/30/2005#)
  );