我正在尝试获取过去6个月的数据。
这就是我用过的:
WHERE d_date > DATEADD(m, -6, current_timestamp)
我收到了这个错误。
ERROR: CLI prepare error: SQL0206N "M" is not valid in the context where it is used
也尝试了
WHERE d_date > current date -180
并收到此错误:
ERROR: CLI prepare error: SQL0171N The data type, length or value of the argument for the parameter in
position "2" of routine "-" is incorrect. Parameter name: "". SQLSTATE=42815
请建议。
答案 0 :(得分:3)
基于Andriy的鹰眼,这是(我认为)DB2语法:
WHERE d_date > current_date - 6 MONTHS
并且here is a link是一个非常好的函数,可以在DB2中镜像DATEADD。
另外,既然你提到了SAS,那么这是SAS语法做同样的事情:
WHERE d_date > intnx('MONTH', today(), -6, 'SAME');
虽然您说使用SAS Enterprise Guide运行此功能,但您显示的语法不是SAS。您收到的错误消息表明您正在将“pass-thru”代码直接提交给数据库。
答案 1 :(得分:1)
你也可以尝试这个
SELECT *
From PIS.dbo.PIS_tblEmployeeGenInfo
WHERE dtJoiningDate > DATEADD(m, -6, current_timestamp)
答案 2 :(得分:1)
我在代码中使用以下内容:
向员工插入(I_EMP,T_CRT,C_SYS,D_HIRED) 值(21,当前时间戳,10,当前日期-6个月);
这是在DB2中,并且没有任何问题。
希望会有所帮助。
答案 3 :(得分:0)
在DB2中,它应该类似于
WHERE TIMESTAMPDIFF(64, CAST(CURRENT_TIMESTAMP- d_date AS CHAR(22))) <= 6
删除SQL-Server标记,即MS SQLServer问题。