17

我已经尝试了一段时间来获得与GETDATE()DB2 for i 中类似的方法。到目前为止,我发现了以下内容:

current date
current timestamp
current time

我是否可以:

 select specific, columns
 from table
 where datefield = current date - 1 day

这是最有效的方法还是我可能还没有找到某种方法?

编辑:

我目前有这个:

WHERE datefield = - days(date('2013-10-28'))

虽然这没有帮助,因为我需要在查询运行的每一天都对其进行编辑。

现在已经到了这个:

WHERE datefield = VARCHAR_FORMAT(CURRENT TIMESTAMP, 'YYYYMMDD') - 1

除非这在每月的第一天不起作用,因为 1 - 1 = 0 并且一个月中没有第 0 天......

4

3 回答 3

32

这将为您提供昨天的日期:

SELECT CURRENT DATE - 1 DAY FROM sysibm.sysdummy1
于 2013-10-30T14:12:39.453 回答
4

如果您想知道某个日期范围作为替代方案,您可以尝试使用 TIMESTAMPDIFF 标量函数,阅读语法图跳过可视语法图参数:16 表示它将每天评估

下一个示例确定截至目前 70 天的范围。

WHERE (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE)) )<70 AND (TIMESTAMPDIFF(16, CHAR(SYSDATE- CURRENT DATE)) ) > -1

您可以查看此链接以了解有关 DB2 支持的此方法的所有详细信息:http ://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql .ref.doc/doc/r0000861.html?cp=SSEPGG_9.7.0%2F2-10-3-2-155

于 2015-01-13T16:17:24.150 回答
-5
select dateadd(dd,-1,getdate())
于 2013-10-30T12:00:26.957 回答