我正在使用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_from
和date_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'
非常感谢!
答案 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
我希望这对您的情况有帮助。