我已经花了一天时间寻找正确的SQL脚本,只是为了得到2次varchar时间的差异。
以下是每个值的 varchar 列:
- ProcSchedTime(1319) 即 13:19
- PtEntersRoom时间(0930)即09:30
所以它将是这样的:ProcSchedTime - PtEntersRoomTime = 221(分钟)我希望结果在几分钟内是 221,而不是 389。
SQL 2005 在这里。
我很抱歉造成混乱。
请,谢谢!
你可以让它看起来像一个日期时间,把它投射到一个日期时间,然后使用DateDiff
SELECT DATEDIFF(MINUTE,cast(STUFF('1319', 3, 0, ':') as datetime) , cast(STUFF('0930', 3, 0, ':') as datetime))
STUFF 函数只是在中间添加一个冒号。
要获得以分钟为单位的差异:
(13 - 09) * 60 + (19 - 30)
select (left(varchartime1,
2
) - left(varchartime2,
2
)
) * 60 + (right(varchartime1,
2
) - right(varchartime2,
2
)
)
希望它不会抛出类型错误
这将从表中获取字段,
SELECT DATEDIFF(MINUTE, LEFT(PtEntersRoomTime, 2) + ':' + RIGHT(PtEntersRoomTime, 2)
, LEFT(ProcSchedTime, 2) + ':' + RIGHT(ProcSchedTime,2)
) AS [TimeDifference]
FROM TableName