2017-04-18 42 views
0

我有這樣總沒有在SQL數年圖

id name fromdate todate 
1 abc 1993  2011 
2 def 2006  2016 

數據現在我想總的持續時間即我想了多少年的員工開支1993至2011年在這裏顯示了年花

id name fromdate todate total_years 
1 abc 1993 2011 18 
2 def 2006 2016 10 

查詢

select * from employee 
+0

你確定報告10年的記錄id = 2是你想要的嗎? –

+0

'fromdate'和'todate'列只存儲一個整數年,還是有一個完整日期? –

+0

只有int值.. –

回答

0

不要減去beetween TODATE並沒有fromdate柱:

SELECT 
    id, 
    name, 
    fromdate, 
    todate, 
    CASE ISNUMERIC(ISNULL(todate,'')) WHEN 0 THEN 0 ELSE CAST(todate AS INT)-CAST(fromdate AS INT) END as total_years 
from employee 
+0

這顯示錯誤。操作數數據類型char無效減算子。 –

+0

意味着你的列是不是在你投你的價值的話整數,讓我給一些時間來更新我的答案 –

+0

對不起我的壞,這是不是int值 –

0

你的輸出意味着你想下面的查詢:

select id, name, fromdate, todate, 
     cast(todate as int) - cast(fromdate as int) as total_years 
from employee 

看來,你是存儲您的年柱爲文本。這不是一個好主意,而應該使用數字類型。實際上,將實際日期存儲在這些列中會更好,這將使其更容易處理。

+0

這顯示錯誤..操作數的數據類型char是減法操作 –

+0

無效@ user123使用'CAST(todate as int)'。看起來,你將你的歲月存儲爲文本,而不是一個好主意。 –

+0

對不起,這不是int值 –