我在使用PROC SQL为日期添加时间时遇到了问题。使用PROC SQL,我提取的列格式为MMDDYY10.
。我需要将 x 天, y 小时和 z 分钟添加到此日期。我现在最大的问题就是附上一张零时间戳。
我保证,在来到这里之前我一直都在网上,没有什么是我需要的。我觉得很疯狂,这似乎不应该是那么难做的事情!
我最接近目标的是使用:
SELECT
DHMS(myDateVar,0,0,0) AS myDateVar FORMAT = DATETIME22.
FROM
tableName
然而,这只是返回我的日期变量(现在只是今天),随机时间为20:48:37
最终,选择的数据集将附加到SAS识别为DATETIME22.
格式化列的SQL服务器表中。
那么,任何人都可以帮我把 x 天, y 小时和 z 分钟添加到日期MMDDYY10.
在PROC SQL select语句中?
答案 0 :(得分:1)
我无法复制你的问题,即使汤姆的建议修复。您的日期变量很可能存在问题。它是SAS日期变量吗?您可以使用DHN功能和使用INTNX功能的天数来添加小时,分钟和秒。
proc sql;
create table want as
select dhms(date, 0, 0, 0) as mydate format=datetime22.,
dhms(today(), 0, 0, 0) as mydate2 format=datetime22.
from sashelp.stocks;
quit;
proc print data=want(obs=20);
var mydate:;
run;
编辑: 从Excel中引入时,“date”变量有一个十进制组件。不知道为什么,但你可以通过使用floor()函数来解决它,只获得你正在寻找的数字和答案。我强烈建议您首先解决该问题,因为您可能错误地导入了日期,或者SAS可能会错误地解释它。
data have;
format date date9.;
input date;
cards;
10918.12
10918.23
10918.58
;
run;
proc print data=have;
run;
data want;
set have;
date_new=dhms(date, 0,0,0);
format date_new datetime22.;
date_want=dhms(floor(date), 0, 0,0);
format date_want datetime22.;
run;
proc print; run;