如何在使用 SAS 的过程 sql 中添加日期列?

How to add Date column in using SAS' proc sql?

我正在尝试将今天的日期列添加到我现有的数据集中。我正在使用上一个问题中提供的方法。我的代码如下:

proc sql;
    alter table data1 add today_date char label= "Today's Date" format = .;
    update data1 set today_date= today();
quit;

但是,我收到以下错误:

327  proc sql;
328      alter table data1 add today_date char label= "Today's Date" format = .;
NOTE: Table DATA1 has been modified, with 11 columns.
329      update data1 set today_date= today();
ERROR: today_date, a character column, can only be updated with a character expression.
330  quit;

这样做的目的是计算数据集中现有开立账户的天数。根据我的理解,可以使用今天的日期和开户时间之间的差异来计算任期。

谢谢

我怀疑问题出在您的 Today's Date 字段格式错误,而不是日期。试试下面的代码:

proc sql;
    alter table data1 
    add todays_date date;
    update data1  
    set todays_date = today();
quit;

关于

I am trying to add the Today's Date column to my existing dataset.

数据集的每个单元格(行和列的交集)都有一个固定值。今天的日期值明天就是昨天的日期值。

具有动态值的数据结构称为视图,其中的某些列可以是计算的结果。

您可能需要考虑

* Create view once, use tomorrow! ;
proc sql;
    create VIEW data1_v as
    select 
      *
    , today() as today_date format=date9. label= "Today's Date"
    from
      data1
    ;

您可能还想详细了解 SAS 日期值和 SAS 日期格式的性质。

  • SAS 日期值 - 数字,自 1960 年 1 月 1 日以来的天数
  • SAS 日期格式 - 如何为人类呈现日期值(作为字形序列)。
  • SAS 日期信息格式 - 如何解释字形并将其转换为日期值

您还可以通过简单地使用 today() 函数在计算中引用今天的日期,而不依赖于数据源中预先组合或预先计算的列。