如何将SAS中的日期转换为YYYYMMDD数字格式

时间:2014-08-05 19:03:55

标签: sas proc-sql

在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中的各种方法。

为了澄清,该字段实际上应该是数字,而不是字符字段,也不是日期。

2 个答案:

答案 0 :(得分:7)

如果您希望该字段为20141231存储值31DEC2014,则可以执行以下操作:

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”表示(例如,将其放入文本文件),请将其设为字符变量。

答案 1 :(得分:-4)

别。

您无法使用内置SAS功能进行日期计算。

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