将int转换为SQL脚本中的时间跨度(SQL Server)

将int转换为SQL脚本中的时间跨度(SQL Server)

问题描述:

查询在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

最后它并不难。我没有解析sql查询中的时间跨度int。无论我尝试了什么,我都会在每个变体中遇到错误。 那我的解决方案:

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

在视图模型,其在所述控制器获得通过,我解析它:

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

您遇到的问题是SUM函数。因为你正在试图总结一段时间。您需要使用DATEADD功能。 想这样如果尝试总结之间13:50和21:45它不会工作