繁体   English   中英

Microsoft Access SQL查询没有年份的日期范围

[英]Microsoft Access SQL to query a date range without year

我的问题与此问题相似,但有一点不同。

我有以下查询:

SELECT Cats_History.ID, Cats_History.TYPE, Cats_History.BEGDATE, Cats_History.ENDDATE, Cats_History.DESCRIPTION, Cats_History.LOSS, Cats_History.LOSSCURRENT
FROM Cats_History
WHERE (Month(Cats_History.BEGDATE)*100)+Day(Cats_History.BEGDATE) Between 101 And 131;

在SQL中指定月份/日期时,这可以正常工作。 但是,如果我用[开始]和[结束]替换101和131,以便用户在单击我的表单按钮后可以输入值,则会得到错误的结果。

例如,如果我使用表格输入101和108,则显示正确的一月日期,但也显示十月日期。

SELECT Cats_History.ID, Cats_History.TYPE, Cats_History.BEGDATE, Cats_History.ENDDATE, Cats_History.DESCRIPTION, Cats_History.LOSS, Cats_History.LOSSCURRENT
FROM Cats_History
WHERE (Month(Cats_History.BEGDATE)*100)+Day(Cats_History.BEGDATE) Between [start] And [end];

如果我尝试除1月以外的任何日期,它似乎也可以正常工作。

应该很简单:

SELECT Cats_History.ID, Cats_History.TYPE, Cats_History.BEGDATE
  , Cats_History.ENDDATE, Cats_History.DESCRIPTION, Cats_History.LOSS
  , Cats_History.LOSSCURRENT
FROM Cats_History
WHERE Month(Cats_History.BEGDATE) = 1
  AND Day(Cats_History.BEGDATE) BETWEEN ([start] % 100) AND ([end] % 100);

我不确定您为什么会在十月约会。 听起来您用来生成[start][end]的数学运算可能有错误。

我建议只使用日期值并将查询简化为:

SELECT Cats_History.ID, Cats_History.TYPE, Cats_History.BEGDATE
  , Cats_History.ENDDATE, Cats_History.DESCRIPTION, Cats_History.LOSS
  , Cats_History.LOSSCURRENT
FROM Cats_History
WHERE Cats_History.BEGDATE BETWEEN [start] AND [end];
SELECT Cats_History.ID, Cats_History.TYPE, Cats_History.BEGDATE, Cats_History.ENDDATE, Cats_History.DESCRIPTION, Cats_History.LOSS, Cats_History.LOSSCURRENT
FROM Cats_History
WHERE (Month(Cats_History.BEGDATE)*100)+Day(Cats_History.BEGDATE) Between CInt([start]) and CInt([end]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM