Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performing date/time subtraction in SQL Server

I have four columns in a table:

date entered, time entered, date completed, time completed

I would like to know the difference between date/time ENTERED and date/time COMPLETED

For example

date entered = 1/1/2001
time entered = 10:00
time completed = 1/2/2001
time completed = 11:00

The difference is 25 hours.

How can I perform this computation with a select statement?

I tried this:

DATEDIFF(hh,dateadd(hh,[Time Entered],[Date Entered]),dateadd(hh,[Time Completed],[Date Completed]) ) AS [Hours]

and got the following error:

Msg 8116, Level 16, State 1, Line 2
Argument data type time is invalid for argument 2 of dateadd function.

like image 504
Alex Gordon Avatar asked Sep 21 '26 12:09

Alex Gordon


1 Answers

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))

So, in terms of your tables' columns:

select datediff(hh, [date entered] + cast([time entered] as datetime), 
                    [date completed] + cast([time completed] as datetime)) as [Hours]
like image 129
Mitch Wheat Avatar answered Sep 24 '26 00:09

Mitch Wheat