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

Add timestamp to MMDDYY10. column in PROC SQL (SAS E Guide)

我在使用 PROC SQL 将时间添加到日期时遇到问题。使用 PROC SQL,我拉出的列被格式化为 MMDDYY10.。我需要将 x 天、y 小时和 z 分钟添加到该日期。我现在最大的问题是附加一个清零的时间戳。

我保证,在来这里之前我已经浏览了整个网络,没有什么是我需要的。我觉得很疯狂,这似乎不是一件应该那么难做的事情!

我最接近目标的是使用:

SELECT
    DHMS(myDateVar,0,0,0) AS myDateVar FORMAT = DATETIME22.
FROM
    tableName

然而,这只是 returns 我的日期变量(目前只是今天),随机时间为 20:48:37

最终,select编辑的数据集将被附加到 SAS 识别为 DATETIME22. 格式化列的 SQL 服务器 table。

所以,谁能帮我加上 x 天、y 小时和 z PROC SQL select 语句中日期 MMDDYY10. 的分钟数?

即使使用 Tom 的建议修复,我也无法重现您的问题。您的日期变量很可能有问题。它是 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 引入变量时,您的 "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;