3

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.

Dale K
  • 25,246
  • 15
  • 42
  • 71
Alex Gordon
  • 57,446
  • 287
  • 670
  • 1,062
  • This topic is covered here, too. http://stackoverflow.com/questions/700619/how-to-combine-date-from-one-field-with-time-from-another-field-ms-sql-server – Griffin Mar 15 '12 at 00:24

5 Answers5

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

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]
Mitch Wheat
  • 295,962
  • 43
  • 465
  • 541
  • +1 This is the correct answer, although I would have casted the "date" field to a datetime instead of the "time". – Griffin Mar 15 '12 at 00:22
3
select datediff(hour,'1/1/2001 10:00','1/2/2001 11:00')
Thit Lwin Oo
  • 3,388
  • 3
  • 20
  • 23
1

Try

select DateDiff(ss, [Date Entered] + convert(datetime, [Time Entered]), 
                    [Date Completed] + convert(datetime, [Time Completed])) 
from myTable

to get the result in seconds.

Here's a standalone example:

declare @dateentered date = '1/1/2001'
declare @timeentered time = '10:00'
declare @datecompleted date = '1/2/2001'
declare @timecompleted time = '11:00'

select DateDiff(ss, 
    @dateentered + convert(datetime, @timeentered), 
    @datecompleted + convert(datetime, @timecompleted)) 

And of course you can specify different dateparts as specified for DATEDIFF.

Phil
  • 42,255
  • 9
  • 100
  • 100
0

Use DateDiff

Coltech
  • 1,670
  • 3
  • 16
  • 31
0
DECLARE @StartDate DATETIME
Declare @EndDate DATETIME
declare @startime datetime
declare @endime datetime

SET @StartDate = '2001-01-01'
set @startime = '10:00'
SET @EndDate = '2001-01-02'
set @endime = '11:00'

set @StartDate = @StartDate + @startime
set @EndDate = @EndDate + @endime

--To get only Hours
SELECT DATEDIFF(hh, @StartDate,@EndDate ) AS [Hours];
Taryn
  • 242,637
  • 56
  • 362
  • 405