1

我在使用 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 服务器表中。

那么,谁能帮我在 PROC SQL 选择语句中为日期添加x天、y小时和z分钟?MMDDYY10.

4

1 回答 1

1

即使使用汤姆的建议修复,我也无法复制您的问题。您的日期变量很可能有问题。它是 SAS 日期变量吗?您可以使用 DHMS 功能添加小时、分钟和秒,使用 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 中引入“日期”变量时,它有一个小数部分。不知道为什么,但您可以通过使用 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;
于 2015-09-18T18:09:47.450 回答