在SQL中使用日期逻辑

时间:2012-05-30 02:49:29

标签: sql sql-server date db2

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

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驱动程序] [DB2] SQL0206N”CURDATE“在使用它的上下文中无效.SQLSTATE = 42703 ”。 Msg 7350,Level 16,State 2,Line 19 无法从OLE DB提供程序“MSDASQL”获取链接服务器“ACLS_PROD”的列信息。

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

2 个答案:

答案 0 :(得分:2)

DB2中,名为CURRENT DATE的'特殊寄存器'(两个字)为您提供当前日期。

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

答案 1 :(得分:0)

免责声明:我不是DB2开发人员;我之前从未对它进行过如此多的查询。

据说,从您复制的错误消息中,看起来它正在尝试针对DB2数据库运行。因此,您可以使用current time代替GETDATE()吗?这是我在Googling DB2 current date大约15秒内发现的内容。

希望有所帮助,祝你好运。