You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS proc SQL中将datetime类型时间提取小时并转为数值的问题咨询

问题根因

  • SAS中的timepart()函数返回值为当日0点到对应时间的总秒数,你给返回值附加了time2.输出格式,所以视觉上显示为10,但变量底层实际存储的数值是10*3600=36000,并非你需要的10。
  • 后续转换得到3的原因:使用未指定长度的best.格式输出36000时,会默认转为短科学计数法格式3.6E4,再用input()读取时仅识别到首位的3,因此得到错误结果。

正确解决方法

方法1(推荐):直接调用hour()函数处理原始datetime变量

hour()可以直接从datetime类型变量中提取数值型的小时数,一步得到结果,代码如下:

proc sql;
create table def as
select hour(x) as x from 你的原表名;
quit;

方法2:基于timepart()的结果计算

如果你需要保留timepart()的处理逻辑,可以将返回的秒数除以3600后取整,得到小时数:

proc sql;
create table abc as
select int(timepart(x)/3600) as x from 你的原表名;
quit;

以上两种方法得到的x都是数值类型,取值为10,符合需求。

内容的提问来源于stack exchange,提问作者gjsaafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:24:04