在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中的各种方法。
为了澄清,该字段实际上应该是数字,而不是字符字段,也不是日期。
答案 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日,并从那里开始递增。格式用于显示报告和演示所需的格式。