Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

datediff not returning what I'm expecting

Anyone know why the following is returning 8? I'm expecting 8 hours 30 minutes, or 8.5?

declare @start_day datetime;
declare @end_day datetime;
declare @start_time datetime;
declare @end_time datetime;

set @start_day = '2014-06-18';
set @end_day = '2014-06-18';
set @start_time = '09:00';
set @end_time = '17:30';

print datediff(hour,@start_day + @start_time, @end_day + @end_time);
like image 557
oshirowanen Avatar asked Feb 05 '26 18:02

oshirowanen


2 Answers

Try this, CAST your DATEDIFF of the minutes to float then divide by 60 to get the hours.

declare @start_day datetime;
declare @end_day datetime;
declare @start_time datetime;
declare @end_time datetime;

set dateformat ymd

set @start_day = '2014-06-18';
set @end_day = '2014-06-18';
set @start_time = '09:00';
set @end_time = '17:30';

print cast(datediff(minute,@start_day + @start_time, @end_day + @end_time) as float) / 60;
like image 103
user692942 Avatar answered Feb 07 '26 14:02

user692942


Try this :

print cast(datediff(mi,@start_day + @start_time, @end_day + @end_time) 
           as decimal(10,2))/60;
like image 30
Ravi Singh Avatar answered Feb 07 '26 16:02

Ravi Singh