get the time differencial between two hours

Posted on 2011-04-20
Medium Priority
Last Modified: 2012-06-27
hi there,
I have stored two dates  on my table and it looks like this:
event_time                        event_time_end
1900-01-01 10:20:00.000 1900-01-01 10:30:00.000

notes: this two hours are not always 15 minutes it varies hence the reason why i need to get the time difference between the two.
how can i get the difference between the two?
Question by:COHFL
  • 2
  • 2
LVL 22

Expert Comment

by:Nico Bontenbal
ID: 35432634
select DATEDIFF(MINUTE,'1900-01-01 10:20:00.000', '1900-01-01 10:30:00.000')

Open in new window

You could divide by 60 to get the hours like this:
DATEDIFF(MINUTE,'1900-01-01 10:20:00.000', '1900-01-01 10:30:00.000')/convert(real,60)
And you'll probably want to replace the time string with field names from your table. Something like:
select DATEDIFF(MINUTE,event_time, event_time_end)/convert(real,60) from event_times
LVL 21

Expert Comment

by:Alpesh Patel
ID: 35432677
select datediff(minute, date1, date2)

Author Comment

ID: 35432682
the only problem with doing the division by 60 if i run this:
select DATEDIFF(MINUTE,'2008-01-01 12:00:00', '2008-01-01 12:15:00')/convert(real,60)
i get 0.25 where it should display 0.15
LVL 22

Accepted Solution

Nico Bontenbal earned 500 total points
ID: 35432756
Something like this than maybe:
select dateadd(MINUTE, DATEDIFF(MINUTE,'1900-01-01 10:20:00.000', '1900-01-01 10:35:00.000'), '1900-01-01')
returns the difference as a time. Will only work if the difference is less than a day.
Or what about:
select convert(varchar(3),DATEPART(HOUR, dateadd(HOUR, DATEDIFF(HOUR,'1900-01-01 09:20:00.000', '1900-01-01 10:35:00.000'), '1900-01-01'))) + ' hours and ' +  convert(varchar(3),DATEPART(MINUTE, dateadd(MINUTE, DATEDIFF(MINUTE,'1900-01-01 09:20:00.000', '1900-01-01 10:35:00.000'), '1900-01-01'))) + ' minutes'


Author Comment

ID: 35433020
ok that did it.
iuse your suggestion:
select dateadd(MINUTE, DATEDIFF(MINUTE,'1900-01-01 10:20:00.000', '1900-01-01 10:35:00.000'), '1900-01-01')

and i add a small rinkle to filter out the time portion of it so it looks cleaner:

select CONVERT(VARCHAR(8), dateadd(MINUTE, DATEDIFF(MINUTE,'1900-01-01 08:20:00.000', '1900-01-01 10:35:00.000'), '1900-01-01'), 108)


Featured Post

Veeam and MySQL: How to Perform Backup & Recovery

MySQL and the MariaDB variant are among the most used databases in Linux environments, and many critical applications support their data on them. Watch this recorded webinar to find out how Veeam Backup & Replication allows you to get consistent backups of MySQL databases.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
It is possible to export the data of a SQL Table in SSMS and generate INSERT statements. It's neatly tucked away in the generate scripts option of a database.
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
Viewers will learn how the fundamental information of how to create a table.
Suggested Courses

578 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question