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

如何将SAS中的日期转换为YYYYMMDD数字格式,sas,proc-sql,Sas,Proc Sql,在test_1表中,my_date字段是“DATE9.”格式。 我想将其转换为纯数字格式(数字长度8),格式为YYYYMMDD 我也希望在procsql语句中实现这一点 以下是我到目前为止的资料。 显然,我需要一些东西来操作my_date字段 rsubmit; proc sql; CREATE TABLE test_2 AS SELECT my_date FROM test_1 ; quit; endrsubmi

在test_1表中,
my_date
字段是“DATE9.”格式。
我想将其转换为纯数字格式(数字长度8),格式为
YYYYMMDD

我也希望在procsql语句中实现这一点

以下是我到目前为止的资料。
显然,我需要一些东西来操作my_date字段

rsubmit;
proc sql;
    CREATE TABLE test_2 AS      
    SELECT
        my_date
    FROM
        test_1
    ;
quit;    
endrsubmit;
仅供参考:我发现很难理解SAS中的各种方法


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

如果希望该字段存储2014年12月31日的值
20141231
,可以执行以下操作:

proc sql;
  create table want as
   select input(put(date,yymmddn8.),8.) as date_num
     from have;
quit;
input(…)
将某物转换为数字,
put(…)
将某物转换为字符串。在本例中,我们首先
放入所需格式(
yymmdn8.
是没有分隔符的yyymmdd),然后
使用
8.
输入
它,这是我们正在读取的字符串的长度

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

不要

您将无法使用内置SAS函数进行日期计算


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

你说的“转换”是什么意思?您只想让它看起来像
20141231
?或者您希望它实际上是数字
20141231
(据SAS了解,这不是一个日期)?是的,我需要它是一个实际的数字。我对问题进行了编辑以使其更清楚。这是一个评论,不是答案。如果包含在实际答案中(请参阅:我的答案),这种事情是可以的,但如果只是告诉用户不要做[x用户询问的事情],不要将其作为答案提供。在这里同意Joe的观点。我不想讨论我为什么需要它,因为那会把我的问题弄得一团糟,让别人很难理解。这很公平。这里的协议是什么,让答案被否决,或者删除(如果可能的话)?