在Access中使用NOW功能

时间:2013-09-09 19:37:27

标签: ms-access

我正在制定一个代码,以吸引过去两年内获得一定评级的所有员工。我一直在研究YEAR(NOW())函数,但我很难设置它。我需要使用NOW函数,因为我需要它从用户访问查询时提取数据。评级在每个下一个月完成(即2013年评级将于2014年2月完成),因此需要阅读类似

的内容
YEAR(NOW()-12) but it

这样一来,如果我今天要运行它,那么它将会回归并推动自2013年以来的2012年和2011年的评级尚未完成。

我的整个代码如下:

SELECT dbo_v_TMS_QPR_01_Score.TMS_ID, dbo_v_TMS_QPR_01_Score.QPR_Year, dbo_v_TMS_QPR_01_Score.Final_QPR_Score
FROM O867IA_VJOBHST INNER JOIN dbo_v_TMS_QPR_01_Score ON O867IA_VJOBHST.SYS_EMP_ID_NR = dbo_v_TMS_QPR_01_Score.GEMSID
WHERE (((dbo_v_TMS_QPR_01_Score.Final_QPR_Score)>="1.25") AND ((O867IA_VJOBHST.EMP_ACN_TYP_CD)="HIR") AND ((O867IA_VJOBHST.REC_EFF_STT_DT)=Year(Now()-12)))
GROUP BY dbo_v_TMS_QPR_01_Score.TMS_ID, dbo_v_TMS_QPR_01_Score.QPR_Year, dbo_v_TMS_QPR_01_Score.Final_QPR_Score;

但我一直收到错误:不一致的数据:预计日期GOT号码(#932)

2 个答案:

答案 0 :(得分:3)

你所拥有的不起作用。它从当前日期/时间减去12天,然后将其转换为年份。因此,它将返回2013年。

使用dataadd()函数。以下是查询设计器中的空白查询。

我要求今天的日期减去12个月。见下面的输出。

enter image description here

答案 1 :(得分:0)

我想你想要的东西是:

If Month(Now()) > 3 then  'If it's after Feb, we want the last 2 years
    LastDayOfPrevYear = DateAdd("d", -1, DateSerial(Year(Now()), 1, 1))
Else   'If it's before March, we want the 2 years prior to last year
    LastDayOfPrevYear = DateAdd("d", -1, DateSerial(Year(Now())-1, 1, 1))
End If

SELECT dbo_v_TMS_QPR_01_Score.TMS_ID, dbo_v_TMS_QPR_01_Score.QPR_Year, dbo_v_TMS_QPR_01_Score.Final_QPR_Score
FROM O867IA_VJOBHST INNER JOIN dbo_v_TMS_QPR_01_Score ON O867IA_VJOBHST.SYS_EMP_ID_NR = dbo_v_TMS_QPR_01_Score.GEMSID
WHERE (((dbo_v_TMS_QPR_01_Score.Final_QPR_Score)>="1.25") AND ((O867IA_VJOBHST.EMP_ACN_TYP_CD)="HIR") AND ((O867IA_VJOBHST.REC_EFF_STT_DT)>=DateAdd("m", -24, LastDayOfPrevYear)))
GROUP BY dbo_v_TMS_QPR_01_Score.TMS_ID, dbo_v_TMS_QPR_01_Score.QPR_Year, dbo_v_TMS_QPR_01_Score.Final_QPR_Score;

这将使您从上一年的最后一天起24个月的“滚动”。

这可能需要稍加调整,但至少应该非常接近。