Declare @Data Table (Working_Hours nvarchar(10)); datatable
insert into @Data (working_hours) select '0:10'; insertion values
insert into @Data (working_hours) select '1:90';
insert into @Data (working_hours) select '0:10';
insert into @Data (working_hours) select '0:10';
--select working_hours from @Data; *this state work*
--select @data as lion ; this state also work
select
convert(int, (datepart(hour, CONVERT(time, q1.working_hours)) * 60) +
DATEPART(MINUTE, CONVERT(time, q1.working_hours))) as lion
from @Data q1;
导致转换错误 - 我想从nvarchar
转换min,然后转换为int以计算sap报告中的sum
如何通过方式表达工作..
答案 0 :(得分:0)
假设只有几小时和几分钟的数据问题(90分钟),你可以不使用time -datatype这样做,这当然不允许这样的时间:
select
convert(int, left(working_hours, charindex(':', working_hours)-1)) * 60 +
convert(int, substring(working_hours, charindex(':', working_hours)+1,10))
from
@data
答案 1 :(得分:0)
适用于SQL Server 2012 +
<强> LiveDemo 强>
WITH cte AS
(
SELECT [working_hours] = REPLACE(q1.working_hours, ':', '.')
FROM @Data q1
)
SELECT
[lion] = PARSENAME(working_hours, 2) * 60 + PARSENAME(working_hours, 1)
FROM cte
您需要获得大块数据。因此,一种奇特的方法是使用PARSENAME