将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和
提前感谢!
答
最后它并不难。我没有解析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它不会工作
请共享采样数据和格式化的文本所需的输出(未图像) – zarruq
即非标准的SQL。你正在使用哪种DBMS产品? (看起来像T-SQL/SQL Server) –
其SQL Server。对不起,我不是那种习惯于sql的。 – eDonkey