SAS PROC SQL按分钟过滤数据:WHERE子句时间条件报错求助
解决SAS中筛选接听时长小于1分钟通话记录的问题
你遇到的语法错误是因为时间常量的写法不符合SAS的规则,咱们直接来修正并给出几种简便的筛选方法:
错误原因
你写的1:00time20.3不是SAS认可的时间常量格式,SAS识别时间常量需要特定的写法,而且SAS的时间值本质是从午夜开始计算的秒数,所以咱们可以从这两个角度来处理:
方法1:使用标准时间常量格式
用单引号包裹时间字符串,后面加t后缀,SAS会自动将其转换为对应的秒数。筛选小于1分钟(即00:01:00)的记录,代码如下:
PROC SQL; SELECT call_date, pick_up FROM p1 WHERE pick_up < '00:01:00't; QUIT;
方法2:直接用秒数比较
因为1分钟等于60秒,而SAS的时间值存储的就是秒数,所以直接和60比较更简洁:
PROC SQL; SELECT call_date, pick_up FROM p1 WHERE pick_up < 60; QUIT;
扩展:灵活按分钟+秒筛选
如果之后需要筛选比如小于2分30秒的记录,两种方式都可以扩展:
- 时间常量写法:
'00:02:30't - 秒数计算:
2*60 + 30 = 150,直接写WHERE pick_up < 150
这样就能轻松按你需要的时长条件筛选数据啦~
内容的提问来源于stack exchange,提问作者Tester_Y
相关产品推荐
相关产品推荐

