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

Datetime 将时间戳添加到MMDDYY10。PROC SQL中的列(SAS E指南),datetime,sas,proc-sql,enterprise-guide,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

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

我保证,在来这里之前我已经上网了,没有什么是我真正需要的。我觉得很疯狂,这似乎不是一件很难做到的事情

我最接近我的目标是使用:

SELECT
    DHMS(myDateVar,0,0,0) AS myDateVar FORMAT = DATETIME22.
FROM
    tableName
但是,这只是返回我的日期变量(目前仅为今天),随机时间为
20:48:37

最终,所选的数据集将附加到SQL server表中,SAS将其识别为
DATETIME22.
格式化列


那么,有谁能帮我在PROC SQL select语句中将x天、y小时和z分钟添加到日期
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;

我相信您只需要将格式更改为
datetime22.
。你的小数点错了place@RobertPenridge对不起,那是个打字错误。我会在编辑中修复它。好的,对我来说今天()也可以,但是当我使用MMDDYY10时。从列中选择日期,它只是添加随机时间戳。我正在用proc sql修改的数据是从excel工作表导入的,所以那里一定发生了一些有趣的事情。请从变量中删除格式并查看它。它已经有小数部分了吗?Excel将日期时间表示为整数天,即一天的小数部分(时间部分)。不过,SAS
dhms
应该可以处理这个问题。因此,Excel中的日期很可能是一个日期时间,很可能是错误导入的。