如何在MS Access中编写此SQL查询

如何在MS Access中编写此SQL查询,sql,vba,ms-access,Sql,Vba,Ms Access,我有一个这样的记录列表 ID---EffectiveDate---Rate 1----1/1/2011--------1.2 2----1/1/2012--------1.3 3----1/1/2013--------1.5 4----1/1/2014--------1.2 给定一个日期参数d1,我想得到d1之前的最新生效日期的记录。因此,如果d1=6/1/2012,我想获得第二条记录。如何在MS Access SQL中编写这样的查询?根据您的数据,我认为SQL查询应该是这样的: SELECT

我有一个这样的记录列表

ID---EffectiveDate---Rate
1----1/1/2011--------1.2
2----1/1/2012--------1.3
3----1/1/2013--------1.5
4----1/1/2014--------1.2

给定一个日期参数d1,我想得到d1之前的最新生效日期的记录。因此,如果d1=6/1/2012,我想获得第二条记录。如何在MS Access SQL中编写这样的查询?

根据您的数据,我认为SQL查询应该是这样的:

SELECT TOP 1 EffectiveDate
FROM MyTableOfDates
WHERE EffectiveDate <= #MyInputDate#
ORDER BY EffectiveDate DESC
选择前1个生效日期
从我的日期表
如果EffectiveDate试试这个

select top 1 * from tablename where EffectiveDate<=d1 order by EffectiveDate desc

从tablename中选择top 1*,其中EffectiveDate
ORDER BY EffectiveDate DESC
Jeez这很简单。我觉得自己很傻,因为我自己没有想到这一点,哈哈。谢谢是的,误读了。编辑答案以反映@HansUp的更正。如果生效日期的模式如示例数据所示非常严格,为什么不使用
其中年份(生效日期)=年份(d1)