在tsql中查找时差

时间:2017-01-13 23:56:17

标签: sql-server tsql

我有两个约会:

2016-11-10 18:30:00
1901-01-01 19:00:00

我需要返回的时间差是30分钟,所以.5小时。我绝对不关心约会。

我确实知道这是一个常见的问题,但我很难将我找到的答案应用到我的具体问题中。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

这应该指向一个合适的方向:

declare @Foo as DateTime = '2016-11-10 18:30:00',
  @Bar as DateTime = '1901-01-01 19:00:00';
select @Foo as Foo, @Bar as Bar,
  Cast( @Foo as Time ) as FooTime, Cast( @Bar as Time ) as BarTime,
  DateDiff( minute, Cast( @Foo as Time ), Cast( @Bar as Time ) ) as DeltaMinutes;

答案 1 :(得分:0)

我不知道它涵盖了所有情况,但你可以这样做。

DECLARE @Val1 DATETIME = '2016-11-10 18:30:00'
DECLARE @Val2 DATETIME = '1901-01-01 19:00:00'

SELECT ABS(DATEDIFF(MINUTE, RIGHT(@Val2, 8), RIGHT(@Val1, 8))) -- 30

答案 2 :(得分:0)

我在Teradata-SQL中也遇到过类似的情况,其中时间以Integer表示,因此可以得出以下差异:

SELECT CAST(CAST((END_TM-STRT_TM)AS INTEGER FORMAT '99:99:99') AS INTEGER FORMAT'99:99') as New_Diff FROM TABLE