数据样本
ACCOUNT STATUS EFF_DT EXP_DT
1234 C 15Jun2018 31Dec9999
1234 A 14Oct2015 15Jun2018
C表示他们已取消。 EFF_DT表示取消日期 AND EXP_DT也是他们的取消日期。我正在尝试找出与我们联系后的8到14天之间是否取消订单。现在,我能够看到他们是否在1-30之间取消了联系。
我有一个SQL代码,其中声明了Contact Date + 30
。因此,联系日期后30天的结果是:
AND B.EFF_DT <= (A.CONTACT_DT+30)
AND B.EXP_DT > (A.CONTACT_DT+30)
在寻找一个介于两者之间的范围时,我需要帮助。
所以我想在8到14之间找到Contact_DT
所以要在接触8天到接触14天之间寻找结果。
答案 0 :(得分:0)
您正在使用两个不同的字段来匹配您的日期,在这种情况下,请尝试以下操作:
b.eff_dt between dateadd(day,8,a.contact_dt) and dateadd(day,14,a.contact_dt)
and b.exp_dt between dateadd(day,8,a.contact_dt) and dateadd(day,14,a.contact_dt)
答案 1 :(得分:0)
根据您的示例代码以及对它所做的解释,您可以将其分别更改为8天和14天。
AND B.EFF_DT <= DATEADD(DAY,8,A.CONTACT_DT) --not sure if you want 8 or 14 here
AND B.EXP_DT > DATEADD(DAY,14,A.CONTACT_DT) --not sure if you want 8 or 14 here
或者,如果您的新逻辑适用于 both 字段,则可以将其写为:
AND B.EFF_DT BETWEEN DATEADD(DAY,8,A.CONTACT_DT) AND DATEADD(DAY,14,A.CONTACT_DT)
AND B.EXP_DT BETWEEN DATEADD(DAY,8,A.CONTACT_DT) AND DATEADD(DAY,14,A.CONTACT_DT)
答案 2 :(得分:0)
@ Dawn685
尝试一下。我假设CONTACT_DT是日期列,因此使用DATEADD函数添加8天或14天。 另外,这里发生的是EFF_DT在合同日期+8和合同日期+14之间,或者EXP_DT在合同日期+8和合同日期+14之间
AND
(
B.EFF_DT BETWEEN DATEADD(DAY, 8, A.CONTACT_DT) AND DATEADD(DAY, 14, A.CONTACT_DT)
OR
B.EXP_DT BETWEEN DATEADD(DAY, 8, A.CONTACT_DT) AND DATEADD(DAY, 14, A.CONTACT_DT)
)