1

我已经对此进行了搜索,但我的字符串似乎与我能找到的示例格式不同。

我将时间设置为 anvarchar(50)和值,例如1535

我有两个这样的列,我想比较两者以找出有多少分钟差异。如何将字符串转换为时间?

4

3 回答 3

2

单程;

declare @t1 nvarchar(4) = '1535'
declare @t2 nvarchar(4) = '1700'

select 
    datediff(minute, 
             cast(stuff(@t1, 3, 0, ':') as time),
             cast(stuff(@t2, 3, 0, ':') as time))

>>85
于 2013-03-14T11:55:19.860 回答
1

If you need the difference in minutes,这是without converting你价值观的一种方法to Datetime

假设 allnvarchar values are convertible to int 并且它们在 中24h format,则差异为 c2-c1 in Minutes

小提琴演示在这里

select ((c2*1-c1*1)/100)*60 + (c2*1-c1*1)%100 inMinutes
from t
于 2013-03-14T12:25:10.793 回答
1

假设您的所有值都可以转换为Time

DECLARE @val1 as NVARCHAR(50);
DECLARE @val2 as NVARCHAR(50);
SET @val1 = '1535'; SET @val2 = '1655';

SELECT DATEDIFF(minute,convert(time,LEFT(@val1,2)+':'+RIGHT(@val1, 2)+':00'), CONVERT(time,LEFT(@val2,2)+':'+RIGHT(@val2, 2)+':00'))
于 2013-03-14T11:56:02.783 回答