2017-02-24 101 views
0

我有則DateDiff(月的兩個日期之間的數)的問題DATEDIFF(月)

當我試試這個:

SELECT 
(CASE 
WHEN X IS NOT NULL THEN 

CONVERT(varchar(4), DATEDIFF(YEAR, Y, C)) + ' years ' 

ELSE 
CONVERT(varchar(4), DATEDIFF(YEAR, A, GETDATE())) + ' years '+ 
CAST(DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy,GETDATE(),b), S), GETDATE()) AS varchar(4)) +' month '+ 
CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy, c, GETDATE()), e), GETDATE()), DATEADD(yy, DATEDIFF(yy, f, GETDATE()), g)), GETDATE()) AS varchar(2)) +' day' end) as result 

FROM g INNER JOIN k ON M=U 
WHERE T=XX order by Y; 

結果是這樣的:2年342個月2天


但它應該是這樣的:2年3個月2日前例如,

有人可以請指出我在正確的方向。謝謝。


正確答案:

CONVERT(varchar(4), DATEDIFF(dd, x, GETDATE())/365) + ' år '+ 

CONVERT(varchar(4), DATEDIFF(MONTH, x, GETDATE()) % 12) + ' måneder '+ 

CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, DATEADD(yy, DATEDIFF(yy, x, GETDATE()), x), GETDATE()), 
DATEADD(yy, DATEDIFF(yy, x, GETDATE()), x)), GETDATE()) AS varchar(2)) +' dag ' end) as Y, 
+0

請編輯您的問題,並提供樣本數據和預期的結果。 –

+0

[如何使用DATEDIFF返回年,月和日?](http://stackoverflow.com/questions/1541570/how-to-use-datediff-to-return-year-month-and-day ) – Tanner

+0

@GordonLinoff;我做了編輯,如果還有其他東西,請告訴我:) – RyaN

回答

0

你需要做一些額外的計算。看看從這裏採取了這種

declare @AsOnDate datetime 
declare @mdob datetime 
set @AsOnDate = GETDATE() 
set @mdob = '2014-12-22' 
Select 
"Years" = CASE 
WHEN (DATEPART(DAY , @mdob)) > (DATEPART(DAY , @AsOnDate)) 
and (DATEPART(Month,@mdob)) = (DATEPART(Month, @AsOnDate)) 
THEN ((datediff(month,@mdob,@AsOnDate)-1)/12) 
ELSE (datediff(month,@mdob,@AsOnDate)/12) 
END, 
"Months" = CASE 
WHEN (DATEPART(DAY , @mdob)) > (DATEPART(DAY , @AsOnDate)) 
and (DATEPART(Month,@mdob)) = (DATEPART(Month,@AsOnDate)) 
THEN ((datediff(month,@mdob,@AsOnDate)-1)% 12) 
ELSE (datediff(month,@mdob,@AsOnDate)% 12) 
END 

解決方案: https://www.sqlservercentral.com/Forums/Dialogs/PostDetails.aspx?PostID=1423756

+0

如果你想要實施日子,這將會變得更加複雜,但是對於幾年和幾個月來說,這是準確的 – PawelCz

+0

tnx對於你的幫助,你能否給我一個前一天也! – RyaN

+0

在同一鏈接中還有一個函數實現,可以計算日期(未重新測試)。檢查這裏:https://www.sqlservercentral.com/Forums/1042865/how-to-get-date-difference-in-years-month-and-date#bm1057924 – Kostis