sql查询获取最近6个月的数据

时间:2013-06-28 16:24:33

标签: sql db2 sas enterprise-guide

我正在尝试获取过去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

请建议。

4 个答案:

答案 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问题。