0

我正在使用 DB2 及其特性“时间逻辑”(如果您对该主题感兴趣 - https://www.ibm.com/developerworks/data/library/techarticle/dm-1204db2temporaldata/index.html给出了介绍) . 我收到了一个关于我目前无法理解的问题的问题:

这个例子可以很好地工作:

SELECT * FROM policy 
FOR BUSINESS_TIME FROM '2009-01-01' TO '2011-01-01'

但是如果我想加入更多的表,我会收到语法错误的错误。并且没有关于如何做到这一点的示例(阅读:我找不到示例)。

是的,我知道如何避免此“功能”,并使其与子选择一起使用。甚至在这之间date_fromdate_to无济于事。因为这BUSINESS_TIME不是平等date_to的。

就我而言,类似:

where'2009-01-01' <='2009-01-01'<'2011-01-01'

不起作用。

DB2 中的更新应该是这样的:

 where '2009-01-01'<='2009-01-01'
   and '2009-01-01'<'2011-01-01'

提前非常感谢!

4

1 回答 1

0

加入也有效 - 这是我在 BUSINESS TIME 加入两个表的示例之一

SELECT u.name, u.BUSINESS_START, u.BUSINESS_END
     , d.name, d.BUSINESS_START, d.BUSINESS_END
     , max(u.BUSINESS_START, d.BUSINESS_START) as Result_BUSINESS_START
     , min(u.BUSINESS_END, d.BUSINESS_END) as Result_BUSINESS_END
  FROM Praesident_USA FOR business_time 
                      FROM '1970-01-01' TO CURRENT DATE U
 INNER JOIN KANZLER_D FOR business_time 
                      FROM '1970-01-01' TO CURRENT DATE D
    ON d.BUSINESS_START <= u.BUSINESS_END 
       AND d.BUSINESS_END >= u.BUSINESS_START 

我希望你发现这对你的场景有帮助。

于 2018-06-22T15:24:08.370 回答