2017-10-06 157 views
-3

我有一個表TABLE1,其中有日期字段,它說TXN_DATE,我有另一個表TABLE2,其中還有一個名爲TXN_DATE的日期字段,我需要匹配TABLE1.TXN_DATE在TABLE2.TXN_DATE的+3或-3天之間的表中的記錄。查找範圍內的記錄+/-在三天的日期範圍內在

任何幫助將不勝感激。

+0

您已經標記了甲骨文和MySQL - 它們是兩種不同的RDBMS - 哪一個是你問的問題嗎? – MT0

+0

首先,正確標記。如果我們爲錯誤的dbms發佈解決方案,這是毫無用處的。其次,學習如何提問。這是一個很好的鏈接。 https://stackoverflow.com/help/how-to-ask。第三,你到目前爲止嘗試過什麼? – Eric

+0

刪除標籤狀態爲「Oracle」中的MySQL標籤。 – MT0

回答

-1
Select t1. column_name 
From TABLE1 t1, Table2 t2 
Where 
(
(T1.TXN_DATE=(T2. TXN_DATE +INTERVAL 1 DAY)) or (T1.TXN_DATE=(T2. TXN_DATE +INTERVAL 2 DAY)) or (T1.TXN_DATE=(T2. TXN_DATE +INTERVAL 3 DAY)) or (T1.TXN_DATE=(T2. TXN_DATE - INTERVAL 1 DAY)) or (T1.TXN_DATE=(T2. TXN_DATE - INTERVAL 2 DAY)) or (T1.TXN_DATE=(T2. TXN_DATE - INTERVAL 3 DAY)) 
) ; 
+0

如果間隔1天和2小時,這將與Oracle中的日期不符。 – MT0

+0

你的意思是3天零2小時? –

+0

不,我的意思是如果(在Oracle中)'T1.TXN_DATE = CAST(TIMESTAMP'1970-01-01 00:00:00'AS DATE)'和'T2.TXN_DATE = CAST(TIMESTAMP'1970-01-02 02 :00:00'AS DATE)',那麼它們相隔不到3天,但是你的查詢不會與它們匹配,因爲它只查看整天的值而不是查找日期範圍。 – MT0

0

Oracle解決方案:

SELECT * 
FROM table1 t1 
     INNER JOIN 
     table2 t2 
     ON (t1.TXN_DATE BETWEEN t2.TXN_DATE - INTERVAL '3' DAY 
          AND t2.TXN_DATE + INTERVAL '3' DAY);