微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据存储为Char4的时间计算持续时间

如何解决根据存储为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 举报,一经查实,本站将立刻删除。