2

在 test_1 表中,my_date字段是“DATE9”。格式。
我想将其转换为纯数字格式(数字长度为 8),其形式为YYYYMMDD.
理想情况下,我还想在 proc sql 语句中执行此操作。

这是我到目前为止所拥有的。
显然我需要一些东西来操纵 my_date 字段。

rsubmit;
proc sql;
    CREATE TABLE test_2 AS      
    SELECT
        my_date
    FROM
        test_1
    ;
quit;    
endrsubmit;

仅供参考:我发现很难理解 SAS 中的各种方法。

澄清一下,该字段实际上应该是一个数字,而不是字符字段,也不是日期。

4

2 回答 2

11

如果您希望该字段存储 的值2014123131DEC2014您可以这样做:

proc sql;
  create table want as
   select input(put(date,yymmddn8.),8.) as date_num
     from have;
quit;

input(..)把东西变成数字,put(..)把东西变成字符串。在这种情况下,我们首先put使用您想要的格式(yymmddn8.是没有分隔符的 YYYYMMDD),然后input使用8.,这是我们正在读取的字符串的长度。

一般来说,应该这样做;将日期存储为其字符串表示的数字是一个非常糟糕的主意。尽量不要使用日期格式,因为一旦你学会了它们就更容易使用它们,而且 SAS 也很乐意与其他数据库一起使用它们的日期类型。如果您想要“20141231”表示(例如,将其放入文本文件),请将其设为字符变量。

于 2014-08-05T19:17:10.073 回答
-4

不。

您将失去使用内置 SAS 函数进行日期计算的能力。

SAS 将日期存储为数字,0 表示 1960 年 1 月 1 日并从那里递增。格式用于显示报告和演示所需的格式。

于 2014-08-05T21:32:51.687 回答