Sql 试图在两者之间找到
数据样本Sql 试图在两者之间找到,sql,sql-server,Sql,Sql Server,数据样本 ACCOUNT STATUS EFF_DT EXP_DT 1234 C 15Jun2018 31Dec9999 1234 A 14Oct2015 15Jun2018 C表示他们取消了。 EFF_DT指取消日期 EXP_DT也是他们的取消日期。我想知道他们是否在我们联系他们后的8到14天内取消。现在我能看到他们是否在1-30之间取消了联系 我有一个SQL代码,其中说明了联系日期+30。因此,联系日期后30天的结果: AND B.E
ACCOUNT STATUS EFF_DT EXP_DT
1234 C 15Jun2018 31Dec9999
1234 A 14Oct2015 15Jun2018
C表示他们取消了。
EFF_DT指取消日期
EXP_DT也是他们的取消日期。我想知道他们是否在我们联系他们后的8到14天内取消。现在我能看到他们是否在1-30之间取消了联系
我有一个SQL代码,其中说明了联系日期+30
。因此,联系日期后30天的结果:
AND B.EFF_DT <= (A.CONTACT_DT+30)
AND B.EXP_DT > (A.CONTACT_DT+30)
和B.EFF_DT(A.CONTACT_DT+30)
我需要在寻找中间范围方面的帮助。
所以我想找到8到14之间的联系人
因此,在联系8天后和联系14天后查找结果。在这种情况下,您使用两个不同的字段来匹配您的日期,请尝试以下方法:
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)
根据您的示例代码,以及它为您所做的解释,您可以适当地将其更改为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
@黎明685
试试这个。我假设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)
)
你能提供样本数据和预期结果吗?所以我们可以很容易地帮助你。当你这么说的时候,在8天的接触和14天的接触之间寻找结果。这是基于exp_dt还是eff_dt?顺便说一句,你真的应该使用我提供的示例数据
DATEADD
,不是吗?和B.EFF_DT(在A.CONTACT_DT+8和A.CONTACT_DT+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)
)