我正在尝试计算服务的持续时间,其中表中的时间存储为Char(4) HHMM。例如,开始时间为1402,即14:02,结束时间为1536,即15:36。
我需要它返回94分钟的持续时间。当我尝试将其转换为数字并减去时,我得到134。我试图转换为时间,但我尝试的每个示例都会给我一个转换类型的消息。
发布于 2020-10-16 00:10:47
只需将值转换为time,然后使用DATEDIFF
SELECT DATEDIFF(MINUTE, CONVERT(time,STUFF(StartTime,3,0,':')),CONVERT(time,STUFF(EndTime,3,0,':')))
FROM dbo.YourTable;发布于 2020-10-16 00:11:59
您可以使用字符串函数和算术:
select t.*,
(left(starttime, 2) * 60 + right(starttime, 2) - left(endtime, 2) * 60 - left(endtime)) / 60 minutes_diff
from mytable t这会将字符串转换为秒数,减去这些值,然后再转换回分钟。
发布于 2020-10-16 00:12:43
您可以将差值转换为分钟,然后将其添加回零时间:
select convert(time,
dateadd(minute,
(((et / 100) * 60) + (et % 60)) - (((st / 100) * 60) + (st % 60)),
0)
)
from (values (1402, 1536)) v(st, et);Here是一个db<>fiddle。
https://stackoverflow.com/questions/64375590
复制相似问题