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

使用TIME构建CASE语句时SAS代码报错,请求修复方案

修复SAS PROC SQL中的时间常量语法错误

嘿,这问题我太熟悉了!你遇到的ERROR 22-322和ERROR 76-322,根源是SAS时间常量的写法不对——SAS没办法直接识别9:00:00这种裸写的时间格式,得用它专属的时间常量语法。

错误原因解析

在SAS里,要表示一个时间值(比如9点整),必须把时间字符串用单引号包裹,再加上T后缀,形成'09:00:00'T这样的时间常量。你直接写9:00:00,SAS会误以为这是数学运算(9除以0再除以0,这显然不合逻辑),所以触发了语法错误。

修复后的代码

把所有裸写的时间改成SAS时间常量格式就行:

PROC SQL; 
CREATE TABLE SUCCESS_TIME_INTERVALS AS 
SELECT A.*, 
CASE 
WHEN A.TIME BETWEEN '09:00:00'T AND '11:00:00'T THEN '9AM_11AM' 
WHEN A.TIME BETWEEN '11:00:00'T AND '13:00:00'T THEN '11AM_1PM' 
ELSE 'OTHER' 
END AS TIME_INTERVALS 
FROM TABLE1 A ;
QUIT;

额外注意事项

如果你的TIME变量是字符类型(不是SAS标准的数值型时间值,数值型时间存储的是从午夜开始的秒数),那得先把它转换成时间格式再做比较,比如:

WHEN INPUT(A.TIME, TIME8.) BETWEEN '09:00:00'T AND '11:00:00'T THEN '9AM_11AM'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:53