Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql VARCHAR是获得差异的时候了_Sql_Sql Server 2005 - Fatal编程技术网

Sql VARCHAR是获得差异的时候了

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

我已经花了一天时间寻找正确的SQL脚本,只是为了得到2个varchar时间的差异

以下是每个值的varchar列:

proschedtime1319是13:19 pEntersRoomTime0930,也就是09:30 所以它将是这样的:ProcSchedTime-PtEntersRoomTime=221分钟 我希望结果是221分钟,而不是389分钟

这里是SQL2005

很抱歉给你带来了混乱


请,谢谢

要获得以分钟为单位的差异:

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