瓦尔查尔是时候得到差异了



我已经花了一天时间寻找正确的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 

最新更新