首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算就业年数

计算就业年数
EN

Stack Overflow用户
提问于 2019-05-01 20:14:58
回答 1查看 41关注 0票数 0

如果第二个位置是在第一个职位结束后的第二天启动的,我正在尝试使用sql更新任何用户的雇用结束日期。提前谢谢!

这是我的数据:

代码语言:javascript
复制
DECLARE @EmploymentDateRanges TABLE
        (
            ID INT IDENTITY (1, 1),
            StartDate DATETIME,
            EndDate DATETIME
        )

INSERT INTO @EmploymentDateRanges
VALUES ('11/1/2018', null)

INSERT INTO @EmploymentDateRanges
VALUES ('8/24/1995', '10/31/2018')

INSERT INTO @EmploymentDateRanges
VALUES ('5/25/1990', '8/24/1994')

如您所见,第一个insert语句中的开始日期是第二个insert语句中结束日期之后的第二天。

我的预期结果是只更新第二个insert语句中的结束日期,并将其设置为null。

第三条insert语句中的结束日期不应更改,因为第三条语句中的结束日期与第二条语句中的开始日期之间的差异超过1天。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-01 20:22:52

如果我的理解正确,您可以使用self joindateadd

代码语言:javascript
复制
update e
set e.enddate = null
from EmploymentDateRanges e 
   join EmploymentDateRanges e2 on dateadd(day, 1, e.enddate) = e2.startdate

这将为enddate添加1天时间,并查看该startdate是否有相应的记录。如果是这样的话,它将enddate更新为null

另一种选择是使用exists

代码语言:javascript
复制
update e
set e.enddate = null
from EmploymentDateRanges e 
where exists (select 1
              from EmploymentDateRanges e2
              where dateadd(day, 1, e.enddate) = e2.startdate)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55942176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档