在SQL Server中执行日期/时间减法

l--*_*''' 3 sql sql-server sql-server-2008

我在表中有四个字段:

date entered, time entered, date completed, time completed
Run Code Online (Sandbox Code Playgroud)

我想知道日期/时间ENTERED和日期/时间COMPLETED之间的区别

例如

date entered = 1/1/2001
time entered = 10:00
time completed = 1/2/2001
time completed = 11:00
Run Code Online (Sandbox Code Playgroud)

差异是25小时.

如何使用select语句执行此计算?

我刚试过这个:

DATEDIFF(hh,dateadd(hh,[Time Entered],[Date Entered]),dateadd(hh,[Time Completed],[Date Completed]) ) AS [Hours]
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

Msg 8116, Level 16, State 1, Line 2
Argument data type time is invalid for argument 2 of dateadd function.
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 5

Declare @dateentered date = '20010101'
Declare @timeentered time = '10:00' 
Declare @datecompleted date = '20010102' 
Declare @timecompleted time = '11:00'

select datediff(hh, @dateentered + cast(@timeentered as datetime), 
                    @datecompleted + cast(@timecompleted as datetime))
Run Code Online (Sandbox Code Playgroud)

因此,就表格的列而言:

select datediff(hh, [date entered] + cast([time entered] as datetime), 
                    [date completed] + cast([time completed] as datetime)) as [Hours]
Run Code Online (Sandbox Code Playgroud)