具有多个联接的业务时间(db2中的时态逻辑)

时间:2018-06-22 09:40:35

标签: sql db2 bi-temporal

我正在使用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'

但是,如果我想连接更多表,则会收到语法错误的错误消息。而且没有任何示例(请参阅:我找不到示例)。

是的,我知道如何避免这种“功能”,并使其与sub select一起使用。而且即使在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'

非常感谢!

1 个答案:

答案 0 :(得分: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 

我希望这对您的情况有帮助。