SAS DBF导入文件的日期问题

时间:2014-09-24 14:33:14

标签: date import sas dbf

我将DBF文件导入SAS,其中包含多个日期列。我想对其中一些列进行一些检查,例如:

  • 1)DATA_NASC> 01/01/1900
  • 2)DATA_NASC是<今天()
  • 3)DATA_INI_V> DATA_FIM_V

在我的DBF文件中,日期列的格式为' dd / mm / yyyy' (巴西标准格式)。 例如,我在第一行:

  • DATA_NASC = 16/06/1940
  • DATA_INI_V = 01/04/1995
  • DATA_FIM_V = 01/04/2005

下面是DBF导入的片段。

我们的想法是创建验证规则(每个规则的宏)来检查日期。

data inputs;
    call symput('campo1', "DATA_INI_V");
    call symput('campo2', "DATA_FIM_V";
    call symput('sistema2', "PVR_SUPERVIDA");
    call symput('hoje', %sysfunc(today(),ddmmyy10.));   
run;

filename inf "/folders/myfolders/BVP Data Quality/PVR_SUPERVIDA_201408.DBF";
proc dbf db4=inf out=test;

现在我想做一些简单的SELECT COUNT(*)来计算寄存器的总数和无效寄存器的数量。类似的东西:

proc sql print;
    SELECT COUNT(*) from test where &campo1 < '01/01/1900';
    SELECT COUNT(*) from test where &campo1 < '01/01/1900' and &campo1 > TODAY();
    SELECT COUNT(*) from test where &campo1 > &campo2;
run;

由于我在DBF文件中的日期列被读作SAS中的文本,我无法比较日期的值。

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

在读取DBF文件后,为什么不将日期(字符格式)转换为实际日期格式,以便进行比较。

E.g:

realdate = input(mytextdatefield,date9.);