1

我正在尝试包含遵循这种推理的日期逻辑:

SELECT * 
FROM OPENQUERY(ACLS_PROD, 'SELECT A182.BK_NUM as Bank,
A182.LN_NUM as Loan_Number,
A182.ACT_STA as Ln_Sta,
A182.NXT_PMT_DUE_DAT as Due_Date,
A182.CUR_LN_BAL as Balance,
A182.INS_REF_NUM as Debt_Can_Ref

FROM PZFRL.ALT0182 A182

WHERE A182.ACT_STA IN(''0'', ''1'', ''2'')
AND (A182.INS_REF_NUM IN(''SDC'', ''SDD'', ''SDU'', ''SLF'', ''SUF'', ''DSF'', 
''JDC'', ''JDD'', ''JDU'', ''JLF'', ''JDF'')
AND A182.NXT_PMT_DUE_DAT <= GETDATE())

ORDER BY A182.BK_NUM,
A182.LN_NUM

') 

在 SAS 中,您可以使用 TODAY() 来完成此操作。SQL 是否具有我可以实现的等效日期函数?当我使用 CURDATE() 和 GETDATE() 时,我在消息日志中收到以下错误:

链接服务器“ACLS_PROD”的 OLE DB 提供程序“MSDASQL”返回消息“[IBM][CLI Driver][DB2] SQL0206N“CURDATE”在使用它的上下文中无效。SQLSTATE=42703“。消息 7350,级别 16,状态 2,第 19 行无法从链接服务器“ACLS_PROD”的 OLE DB 提供程序“MSDASQL”获取列信息。

知道如何解决这个问题吗?

4

2 回答 2

2

DB2CURRENT DATE中,称为(两个字)的“特殊寄存器”为您提供当前日期。

没有括号;刚刚CURRENT DATE到位GETDATE()

于 2012-05-30T03:04:16.563 回答
0

免责声明:我不是 DB2 开发人员;我以前从来没有对它运行过这么多的查询。

话虽如此,从您复制的错误消息来看,它看起来像是在尝试针对 DB2 数据库运行。因此,您可以只使用current time而不是 GETDATE() 吗?这是我在 Google 搜索DB2 current date大约 15 秒后发现的内容。

希望有帮助,祝你好运。

于 2012-05-30T03:05:50.883 回答