Sas 带有proc append的宏中的日期格式
我需要用另一个数据集的每次修改的寄存器更新一个数据集。 我的意思是,使用proc append,sas必须向现有数据集(寄存器)添加一个观测值(temp),该数据集将包含今天的日期和另一个数据集的一些值(值) temp示例Sas 带有proc append的宏中的日期格式,sas,Sas,我需要用另一个数据集的每次修改的寄存器更新一个数据集。 我的意思是,使用proc append,sas必须向现有数据集(寄存器)添加一个观测值(temp),该数据集将包含今天的日期和另一个数据集的一些值(值) temp示例 date VAL1 VAL2 2015-03-11 10 9 完成时登记册的除名: date VAL1 VAL2 2015-01-01 12 23 2015-01-02 22 14 2015-03-
date VAL1 VAL2
2015-03-11 10 9
完成时登记册的除名:
date VAL1 VAL2
2015-01-01 12 23
2015-01-02 22 14
2015-03-11 10 9
我的尝试:
%macro mymacro;
data temp (keep DATE VAL1 VAL2);
set values;
date= datetime();
run;
proc append base=register data=temp; run;
%mend;
data register;
length var1 8. var2 8. date 8. ;
format date yymmdd.;
run;
%mymacro;
我的日期格式有问题,你能帮我吗?
这让我快发疯了。
我必须为寄存器的变量或临时变量定义一些长度吗
结果是var date中的一个数字,我希望是一个日期,显然使用今天()而不是日期时间()
另外,为了保持示例中显示的iso格式,请使用
IS8601DA10.
首先,SAS既有日期也有日期时间。两者都用数字表示,变量都是数字。提交以下代码,您将看到2015年3月11日等于20158,即自1960年1月1日起的天数。今天的datetime等于我运行它时的1741677677;这是自1960年1月1日开始的秒数
data _null_;
d=date();
dt=datetime();
put d=;
put dt=;
run;
在SAS中,您可以用适当的格式表示这些数字。将日期格式(如date9.
应用于日期)告知SAS打印与数字对应的日期。datetime值也是这样:
data _null_;
d=date();
dt=datetime();
put d= date9.;
put dt= datetime.;
run;
在您的情况下,似乎希望使用
date()
函数返回日期,而不是日期时间。您可能正在查找date()
或today()
而不是返回当前日期时间而不是当前日期的datetime()
不必预先创建空的寄存器
数据集,因为proc append
将为您完成此操作
然后,您可以将format语句添加到temp
数据步骤中,并执行以下操作:
data temp (keep date val1 val2);
format date yymmdd10.;
set values;
date = today();
run;
非常感谢,问题是我用的是datetime()而不是today()。非常感谢,问题是我用的是datetime()而不是today()。非常感谢,问题是我用的是datetime()而不是today()。
data _null_;
d=date();
dt=datetime();
put d= date9.;
put dt= datetime.;
run;
data temp (keep date val1 val2);
format date yymmdd10.;
set values;
date = today();
run;