簡體   English   中英

如何在使用 SAS 的 proc 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 = $8.;
    update data1 set today_date= today();
quit;

但是,我收到以下錯誤:

327  proc sql;
328      alter table data1 add today_date char label= "Today's Date" format = $8.;
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;

關於

我正在嘗試將今天的日期列添加到我現有的數據集中。

數據集的每個單元格(行和列的交叉點)都有一個固定值。 今天的日期值明天是昨天的日期值。

具有動態值的數據結構稱為視圖,其中的某些列可能是計算的結果。

您可能要考慮

* 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 日期值 - 數字,自 01JAN1960 以來的天數
  • SAS 日期格式 - 如何為人類呈現日期值(作為字形序列)。
  • SAS 日期信息 - 如何解釋字形並將其轉換為日期值

您還可以通過簡單地使用today() function 來引用今天的計算日期,而不依賴於數據源中的預先組合或預先計算的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM