如何解决根据存储为Char4的时间计算持续时间
我正在尝试计算服务的持续时间,其中表中的时间存储为Char(4)HHMM。例如,开始时间为1402,即14:02,结束时间为1536,即15:36。
我需要它返回94分钟的持续时间。当我尝试仅转换为数字并减去134时,我尝试转换为时间,但是我尝试过的每个示例都给了我转换类型消息。
解决方法
只需将值转换为time
,然后使用DATEDIFF
:
SELECT DATEDIFF(MINUTE,CONVERT(time,STUFF(StartTime,3,':')),STUFF(EndTime,':')))
FROM dbo.YourTable;
,
您可以使用字符串函数和算术:
select t.*,(left(starttime,2) * 60 + right(starttime,2) - left(endtime,2) * 60 - left(endtime)) / 60 minutes_diff
from mytable t
这会将字符串转换为秒数,减去值,然后转换回分钟。
,您可以将时差转换为分钟,然后将其添加回零时间:
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 小提琴。
,谢谢大家的回答,但我找到了答案!
DateDiff(Minute,try_cast(substring(c.start_time,1,2) + ':' + substring(start_time,2) as time),try_cast(substring(stop_time,2) + ':' + substring(c.stop_time,2) as time))
,
任务:给定两个参数为char(4)
- 1402、1536,格式为HHMM
- 返回持续时间(分钟):15 * 60 + 36-14 * 60 + 02 => 94
解决方案:
SELECT(CAST(SUBSTRING('1536',1,2)AS int)* 60 + CAST(SUBSTRING('1536',3,2)AS int)) -(CAST(SUBSTRING('1402',1,2)AS int)* 60 + CAST(SUBSTRING('1402',3,2)AS int));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。