如何获取sql server中两个日期之间的总小时数?

时间:2010-03-19 05:36:58

标签: sql-server-2005 datetime

考虑两个日期2010-03-18 22:30:452010-03-19 03:30:15 ....如何获取sql server中两个日期之间的小时数和分钟数.....

4 个答案:

答案 0 :(得分:16)

@codeka回答了小时部分(来自你的标题),但在问题正文中你问了几小时和几分钟所以,这是一种方式

 select DATEDIFF(hh, @date1, @date2) as Hours_Difference,   
    DATEDIFF(mi,DATEADD(hh,DATEDIFF(hh, @date1, @date2),@date1),@date2) as Minutes_Difference

第一部分的内容是@codeka所展示的内容。它为您提供实际完整时间内两个日期之间的约会。 sql中的第二个术语在(第一个日期+经过的小时数)和第二个日期之间的分钟内给出了日期。您必须在分钟部分中消除等式中的小时数,否则您将获得日期之间的实际分钟数。可以在此处研究Datediff及其允许的Datepart标识符:
http://msdn.microsoft.com/en-us/library/ms189794.aspx

答案 1 :(得分:4)

您需要DATEDIFF功能:

SELECT DATEDIFF(hh, @date1, @date2)

答案 2 :(得分:1)

William Salzmananswer 的问题在于,如果第一次不是在整点,它会返回奇怪的答案。所以 10:30 到 12:00 是 2 小时 -30 分钟。

如果这不是您想要的,那么这会给您 1 小时 30 分钟:

select 
    CONVERT(int,DATEDIFF(mi, @date1, @date2) / 60) as Hrs_Difference,
    CONVERT(int,DATEDIFF(mi, @date1, @date2) % 60) as Mins_Difference

答案 3 :(得分:0)

DATEDIFF函数将解决您的时差问题。

您可以将其检查为:

select DATEDIFF(hh, getdate()-1, GETDATE()) HoursDifference

它将为您提供24小时的结果

谢谢