PROC SQL连接DB2按日期过滤数据失败:筛选2022年及以后数据
问题排查与修复
你的问题核心是DB2无法识别SAS专属的函数和日期常量格式——括号内的SQL语句是直接在DB2服务器上执行的,并非SAS本地处理,所以不能用SAS语法。
错误点拆解
Datepart()是SAS的日期提取函数,DB2对应的函数是DATE()'01JAN2022'd是SAS的日期常量写法,DB2不支持这种格式
修复后的代码
PROC SQL; CONNECT to db2 ; create table mytable as select * from connection to DB2 (SELECT * FROM mytable where DATE(Mydates) >= DATE('2022-01-01') ); DISCONNECT from db2; quit;
补充说明
- 如果需要精确过滤到时间(比如2022年1月1日0点之后的所有时间戳记录),可以用DB2的时间戳语法:
where Mydates >= TIMESTAMP('2022-01-01 00:00:00') - 确认DB2中
Mydates字段为TIMESTAMP类型(和SAS的Datetime30.6格式对应),否则函数调用会报错
内容的提问来源于stack exchange,提问作者gumpy007
相关产品推荐
相关产品推荐

