Sql VARCHAR是获得差异的时候了
我已经花了一天时间寻找正确的SQL脚本,只是为了得到2个varchar时间的差异 以下是每个值的varchar列: proschedtime1319是13:19 pEntersRoomTime0930,也就是09:30 所以它将是这样的:ProcSchedTime-PtEntersRoomTime=221分钟 我希望结果是221分钟,而不是389分钟 这里是SQL2005 很抱歉给你带来了混乱Sql VARCHAR是获得差异的时候了,sql,sql-server-2005,Sql,Sql Server 2005,我已经花了一天时间寻找正确的SQL脚本,只是为了得到2个varchar时间的差异 以下是每个值的varchar列: proschedtime1319是13:19 pEntersRoomTime0930,也就是09:30 所以它将是这样的:ProcSchedTime-PtEntersRoomTime=221分钟 我希望结果是221分钟,而不是389分钟 这里是SQL2005 很抱歉给你带来了混乱 请,谢谢 要获得以分钟为单位的差异: 13-09*60+19-30 select (left(varc
请,谢谢 要获得以分钟为单位的差异: 13-09*60+19-30
select (left(varchartime1,
2
) - left(varchartime2,
2
)
) * 60 + (right(varchartime1,
2
) - right(varchartime2,
2
)
)
希望它不会抛出类型错误您可以使它看起来像日期时间,将其转换为日期时间,然后使用DateDiff
SELECT DATEDIFF(MINUTE,cast(STUFF('1319', 3, 0, ':') as datetime) , cast(STUFF('0930', 3, 0, ':') as datetime))
填充函数只是在中间添加冒号。
这将从表中获取字段,SELECT DATEDIFF(MINUTE, LEFT(PtEntersRoomTime, 2) + ':' + RIGHT(PtEntersRoomTime, 2)
, LEFT(ProcSchedTime, 2) + ':' + RIGHT(ProcSchedTime,2)
) AS [TimeDifference]
FROM TableName
你能重写你的问题吗?我知道您试图将varchar转换为时间值,但您提到的数字对我来说没有意义。+1该语句有效,但我想使用列名而不是实际值。请记住,这些列都是varchar。非常感谢@Duke0ne如果您只是将列名放入.castleftpEntersRoomTime,则此答案应该同样有效。2 as int-castleftProcSchedTime,2 as int*60+castrightEntersRoomTime,2 as int-castrightProcSchedTime,2 as int