将时间戳添加到MMDDYY10。 PROC SQL中的列(SAS E指南)

时间:2015-09-18 17:45:52

标签: datetime sas proc-sql enterprise-guide

我在使用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语句中?

1 个答案:

答案 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;