2017-10-09 113 views
0

查詢在sql腳本中完成。
我的問題:
我需要將模型中的數據作爲json傳遞。
這就是爲什麼我需要將其轉換爲SQL腳本中的時間跨度。將int轉換爲SQL腳本中的時間跨度(SQL Server)

--TEMP 
DECLARE @startDate DATETIME 
SET @startDate = '01-09-2016' 

DECLARE @endDate DATETIME 
SET @endDate = '03-10-2017' 
--END 


SELECT 
Firstname, 
Lastname, 
COUNT(Token.Id) as Tokens, 
**CONVERT(time, SUM(DATEDIFF(ss, Token.ArrivalTime, Token.CompletionTime)), 57) as [Time]** 
FROM Employee 
INNER JOIN Token ON Token.Employee_Id = Employee.Id 
WHERE AssignmentTime >= @startDate and AssignmentTime <= @endDate 
and Status = 2 
GROUP BY Firstname, Lastname 
ORDER BY Tokens DESC 
FOR JSON PATH 

的錯誤是:

The explicit conversion from data type int to time is not allowed 

輸出應該是什麼樣子: 「漢斯」, 「鼓起」,5,400和

提前感謝!

+0

請共享採樣數據和格式化的文本所需的輸出(未圖像) – zarruq

+0

即非標準的SQL。你正在使用哪種DBMS產品? (看起來像T-SQL/SQL Server) –

+0

其SQL Server。對不起,我不是那種習慣於sql的。 – eDonkey

回答

1

最後它並不難。我沒有解析sql查詢中的時間跨度int。無論我嘗試了什麼,我都會在每個變體中遇到錯誤。 那我的解決方案:

DATEDIFF(ss, Token.ArrivalTime, Token.CompletionTime) as TimeInSeconds 

在視圖模型,其在所述控制器獲得通過,我解析它:

public int TimeInSeconds { get; set; } 
    public TimeSpan Time 
    { 
     get { return TimeSpan.FromSeconds(TimeInSeconds); } 
    } 
1

您遇到的問題是SUM函數。因爲你正在試圖總結一段時間。您需要使用DATEADD功能。 想這樣如果嘗試總結之間13:50和21:45它不會工作