2015-11-28 60 views
-1

我無法使用DiffDate代碼如替代DATEDIFF(YYYY)

Declare @start datetime 
Declare @finish datetime 

Set @days = DATEDIFF(yyyy, @startdate, @finishdate) 
SELECT @days/365 AS Years 

因爲我無法找到已提供給我的工作,爲公司的IT供應商應用程序的finishdate列。我的僱主不希望爲IT解決方案付費。

所以我一直在尋找替代解決方案,我嘗試了以下,它不工作...

承擔了部分插入值,它是顯示類似的應用...

EmpID startdate  finishdate  
1  01/01/2014  01/01/2015  
2  02/02/2014  02/02/2015  
3  01/01/2012  01/01/2015 

我得到以下輸出

當我用下面的代碼
EmpID Totalyears 
1   1 
2   1 
3   1 

...

select EmpIDID, Count(StartDate) From Persons GROUP BY EmpID;; 

當輸出應該是Totalyears ...

EmpID Totalyears 
1   1 
2   1 
3   3 

我目前SQL Fiddle測試是SQL在線網站 誰能幫助我?提前致謝。

編輯

可能違背使用變量?東西上 STARTDATE +計數器式的線

例如 STARTDATE 2014年1月1日

和有計數器變量 聲明 計數器INT;

+0

顯示您的數據。 SQL小提琴鏈接爲空 – lad2025

+0

我無法找到finishdate列 - 您的意思是您無法選擇/查看該列的數據嗎?那是對的嗎? – staticvoidmain

+0

@staticvoidmain - 我看不到該列的數據,我無法從系統中看到finishdate列列,但我可以看到startdate列。在C#中,您可以在控制檯或標籤1,2,3等上增加計數器。是否可以使用TSQL來實現類似的功能? – Person

回答

0

使用DATEDIFF,不需要由365分:

SELECT EmpID, DATEDIFF(yyyy,startdate,finishdate) AS Totalyears 
FROM Persons; 

LiveDemo

+0

非常感謝回覆我。不幸的是我無法使用finishdate,因爲我不知道列的名字是什麼。可以使用計數器變量,例如用於第一行使用+1。 – Person

+1

@Person顯示數據的小提琴。現在它是空的 – lad2025

+0

我無法使用您提供的解決方案。它的工作原理,但如前所述,我無法找到系統上的finishdate列。 – Person