查询是在sql脚本中完成的。
我的问题:
我需要将模型中的数据作为json传递。
这就是为什么我需要在sql脚本中将其转换为时间跨度。
--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
输出应该是什么样的:&#34; Hans&#34;,&#34; Muster&#34;,5,400
提前致谢!
答案 0 :(得分:1)
你遇到的问题是SUM函数。因为你试图对一个时间进行求和。您需要使用DATEADD函数。 如果尝试在13:50和21:45之间进行求和,那么就这样想
答案 1 :(得分:1)
最后它并没有那么难。我没有在SQL查询中解析int到timepan。无论我尝试什么,我在每个变体中都会出错。 多数民众赞成我的解决方案:
DATEDIFF(ss, Token.ArrivalTime, Token.CompletionTime) as TimeInSeconds
在控制器中传递的ViewModel中,我解析它:
public int TimeInSeconds { get; set; }
public TimeSpan Time
{
get { return TimeSpan.FromSeconds(TimeInSeconds); }
}