0

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

4 回答 4

4

基于 Andriy 的鹰眼,这里是(我认为)DB2 语法:

WHERE d_date > current_date - 6 MONTHS

这里是一个很好的函数的链接,可以在 DB2 中镜像 DATEADD。

另外,既然你提到了 SAS,这里是 SAS 语法来做同样的事情:

WHERE d_date > intnx('MONTH', today(), -6, 'SAME');

尽管您说您正在使用 SAS Enterprise Guide 运行它,但您显示的语法不是 SAS。您收到的错误消息表明您正在将“pass-thru”代码直接提交到数据库。

于 2013-06-28T16:41:55.880 回答
1

在 DB2 中,它应该类似于

WHERE TIMESTAMPDIFF(64, CAST(CURRENT_TIMESTAMP- d_date AS CHAR(22))) <= 6

删除用于 MS SQLServer 问题的 SQL-Server 标记。

于 2013-06-28T16:37:59.310 回答
1

你也可以试试这个

SELECT *
From  PIS.dbo.PIS_tblEmployeeGenInfo
WHERE dtJoiningDate > DATEADD(m, -6, current_timestamp)
于 2014-02-24T10:22:24.440 回答
1

我在代码中使用以下内容:

插入员工(I_EMP,T_CRT,C_SYS,D_HIRED)值(21,当前时间戳,10,当前日期 - 6 个月);

这是在 DB2 中,并且没有问题。

希望这会有所帮助。

于 2020-02-21T03:08:15.353 回答