使用DateSerial函数可计算给定日期的月份的最后一天。
传递零作为第三个参数, 日 ,实际返回的最后日期 之前的 一个月。
rdate = #2013-7-24#? DateSerial(Year(rdate), Month(rdate), 0)6/30/2013
因此,要获取
rdate月份的最后日期,请添加
1到 month 参数。
? DateSerial(Year(rdate), Month(rdate) + 1, 0)7/31/2013
您可能会怀疑这种方法将中断12月
rdate,因为
Month() + 1它将返回13。但是,
DateSerial仍然可以应对。
rdate = #2013-12-1#? DateSerial(Year(rdate), Month(rdate) + 1, 0)12/31/2013
如果要在Access应用程序会话中运行查询,则可以基于该方法构建VBA函数,并在查询中使用自定义函数。
但是,如果查询将从ODBC或OleDb连接到Access数据库运行,则该查询不能使用VBA用户定义的函数。在这种情况下,您可以
DateSerial直接在查询中使用。
SELECt m.*FROM mytable AS mWHERe m.rdate = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)
如果您
rdate所有的值都将午夜作为时间成分,那应该可以。如果这些值包括其他时间,请使用
Datevalue。
WHERe Datevalue(m.rdate) = DateSerial(Year(m.rdate), Month(m.rdate) + 1, 0)



