如何计算上一个生日的年龄'在SAS PROC SQL步骤中给定生日的给定日期

时间:2015-12-21 17:28:44

标签: sas proc-sql

我想计算' age last birthday'在给定具体出生日期的特定评估日期,使用SAS PROC SQL命令。

我该怎么办?是否有任何限制?

示例输入

DATA INPUTS;
infile cards dlm=',' dsd;
INPUT  DOBDt :DATE9. EvalDt :DATE9. expected;
FORMAT DOBDt date9. EvalDt date9.;
CARDS;
11MAY2009,10MAY2015,5
11MAY2009,11MAY2015,6
11MAY2009,12MAY2015,6
28FEB1984,01DEC2015,31
29FEB1984,28FEB2012,27
29FEB1984,29FEB2012,28
29FEB1984,01MAR2012,28
;
RUN;

目标是将dobDt作为输入,在EvalDt上进行评估并生成expected的答案

2 个答案:

答案 0 :(得分:1)

这可以这样做:

PROC SQL

PROC SQL;
CREATE TABLE outputs2 AS
    select
        *
        ,intck('year',DOBDt,EvalDt,'c')      AS actual
        ,((calculated actual) eq expected)   AS check
    FROM
        inputs
;
QUIT;
对于提供的所有示例,

actual(计算值)与所需结果匹配expected。我不知道这种方法有任何限制,尽管由于SAS日期的值范围有限,可能会有一些极端年龄无法计算。

作为奖励:

数据步骤

DATA outputs;
set inputs;
    actual = intck('year',DOBDt,EvalDt,'c');
    check  = (actual eq expected);
RUN;

答案 1 :(得分:0)

这就是我们过去常常做的事情。另外,“过去生日的年龄”对我来说也很清楚。

Tasks.where('$where' => 'this.date >= this.done_date')

enter image description here