Sql 将DateSerial与>;=&&书信电报;

Sql 将DateSerial与>;=&&书信电报;,sql,ms-access,Sql,Ms Access,我每个月都要运行Access查询。查询中使用的日期是指以前协议的结束日期。下面是3月1日运行的数据的SQL摘录,它返回了2月结束的协议的所有信息: 和((dbo_协议1.结束日期)>=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=日期序列(年([dbo_协议1]![end_日期])、月([dbo_协议1]![end_日期])、月([dbo_协议1]![end_日期-1,1])、月((

我每个月都要运行Access查询。查询中使用的日期是指以前协议的结束日期。下面是3月1日运行的数据的SQL摘录,它返回了2月结束的协议的所有信息:

和((dbo_协议1.结束日期)>=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=(dbo_协议1.结束日期)=日期序列(年([dbo_协议1]![end_日期])、月([dbo_协议1]![end_日期])、月([dbo_协议1]![end_日期-1,1])、月((月(<1.结束日期)
将为您提供当月的第一天

DateSerial(Year(Date())、Month(Date())-1,1)
将显示上个月的第一天

因此,在查询的
WHERE
子句中包含这样一个组合条件:

dbo\u协议\u 1.end\u日期>=日期序列(年(日期()),月(日期())-1,1)
和dbo协议1.结束日期<日期序列(年(日()),月(日()),1)

这就是你想要的吗?
dbo_协议1.end_日期>=DateSerial(年(日())、月(日())-1,1)和dbo_协议1.end_日期
@HansUp-1月份行吗?当然可以,
DateSerial()
在这一点上很聪明。当month piece=1时,减去1,得到上一年的最后一个月……12月。用这个简单的例子检查:
DateSerial(year(#2016-1-1#),month(#2016-1-1#)-1,1)
返回2015年12月1日(即m/d/yyyyy格式)。