2017-03-01 113 views
1

我稱之爲表日期需要年月日和天

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

你假設30天個月或實際? –

+0

我假設的實際日期,但即使它仍然30我可以管理 –

回答

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年7月9日)

FIRST

第二個條目(2017年1月25日)

SECOND

相關問題