寻找时间之间的差异

时间:2014-10-13 08:49:22

标签: sql sybase

在下面的代码中,我试图在几分钟内找出时差

declare @a time
declare @b time
select @a = "Apr 1, 2014 22:36.000"
select @b = "Apr 2, 2014 02:25.000"
select datediff(minutes,@a,@b)

预期输出为229分钟。 24分钟(60-36)+3小时(180分钟)+ 25分钟= 229分钟

但是我得到了-1211 。这个功能正在进行直接修改。 请帮忙。

3 个答案:

答案 0 :(得分:2)

您已将变量声明为时间,不能超过24小时。日期部分被忽略。

实际上,您将此信息发送至dateiff functoon

datediff(minute,'22:36.000', '02:25.000')

这就是你得到否定结果的原因。

我建议您将@a和@b声明为datetime。

declare @a datetime
declare @b datetime
select @a = "Apr 1, 2014 22:36.000"
select @b = "Apr 2, 2014 02:25.000"
select datediff(minutes,@a,@b)

答案 1 :(得分:1)

您可以使用此查询作为参考来计算时差。

select DATEDIFF(day,2007-11-30,2007-11-20) AS NumberOfDays, DATEDIFF(hour,2007-11-30,2007-11-20) AS NumberOfHours, DATEDIFF(minute,2007-11-30,2007-11-20) AS NumberOfMinutes FROM test_table

答案 2 :(得分:0)

您在代码中使用时间数据类型而不是日期时间数据类型(它们将忽略日期部分,只存储时间部分。

所以计算2:25 - 22:36,即20小时(1200)加上11分钟(所有减去,因为第一次是在第二次之后)

sql server日期/时间日期类型记录在此处:http://msdn.microsoft.com/en-gb/library/ms186724.aspx