我有一个名为Dates的表
Opendate Closedate
2015-07-09 NULL
2017-01-25 NULL
我希望输出为
Opendate Workingperiod
2015-07-09 1 years 8 months 20 days
2017-01-25 0 years 1 months 3 days
我们需要计算opendate和今天的日期以及年月和日格式之间的差异。
试过了
SELECT Opendate,
CAST(DATEDIFF(month,Opendate,GETDATE())/12 AS VARCHAR(5))+' year '+
CAST(DATEDIFF(month,Opendate,GETDATE())%12 AS VARCHAR(5)) +' month '+
CAST(DATEDIFF(day,DATEADD(month,DATEDIFF(month,Opendate,GETDATE()),Opendate),GETDATE()) AS VARCHAR(5))+' days ' AS Workingperiod
FROM Dates
输出: -
Opendate Workingperiod
2015-07-09 1 year 8 month -8 days
2017-01-25 0 year 2 month -24 days
我正处于负面状态,有人可以告诉它有什么问题。
答案 0 :(得分:0)
DECLARE @opendate datetime, @date datetime, @years int, @months int, @days int
SELECT @opendate = '2015-07-09'
SELECT @date = @opendate
SELECT @years = DATEDIFF(YYYY, @date, GETDATE()) - CASE WHEN (MONTH(@opendate) > MONTH(GETDATE()))
OR (MONTH(@opendate) = MONTH(GETDATE()) AND DAY(@opendate) > DAY(GETDATE()))
THEN 1 ELSE 0 END
SELECT @date = DATEADD(YYYY, @years, @date)
SELECT @months = DATEDIFF(MONTH, @date, GETDATE()) - CASE WHEN DAY(@opendate) > DAY(GETDATE())
THEN 1 ELSE 0 END
SELECT @date = DATEADD(MONTH, @months, @date)
SELECT @days = DATEDIFF(DAY, @date, GETDATE())
SELECT @years AS 'YEARS', @months AS 'MONTHS', @days AS 'DAYS'
首次入境(2015-07-09)
第二次入境(2017-01-25)