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

Sql server 2005 如何获取sql server中两个日期之间的总小时数?,sql-server-2005,datetime,Sql Server 2005,Datetime,考虑两个日期2010-03-18 22:30:45和2010-03-19 03:30:15。。。。如何在sql server中获取两个日期之间的小时数和分钟数…您需要该函数: SELECT DATEDIFF(hh, @date1, @date2) @科德卡的回答是小时部分(来自你的标题),但在你的问题主体中,你问了几个小时和几分钟,所以,这里有一种方法 select DATEDIFF(hh, @date1, @date2) as Hours_Difference, DATEDI

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

您需要该函数:

SELECT DATEDIFF(hh, @date1, @date2)

@科德卡的回答是小时部分(来自你的标题),但在你的问题主体中,你问了几个小时和几分钟,所以,这里有一种方法

 select DATEDIFF(hh, @date1, @date2) as Hours_Difference,   
    DATEDIFF(mi,DATEADD(hh,DATEDIFF(hh, @date1, @date2),@date1),@date2) as Minutes_Difference
这在第一部分中的作用是@codeka所展示的。它提供两个日期之间的datediff(以实际完整小时为单位)。sql中的第二项给出了(第一个日期+经过的小时数)和第二个日期之间的datediff(以分钟为单位)。你必须从分钟部分的等式中去掉小时数,否则你将得到日期之间的实际分钟数。可以在此处研究Datediff及其允许的Datepart标识符:

DATEDIFF函数将解决您获取小时差的问题

您可以通过以下方式进行检查:

select DATEDIFF(hh, getdate()-1, GETDATE()) HoursDifference
它会给你24小时的结果

谢谢。

的问题是,如果第一次不是在小时,它会返回奇怪的答案。所以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

DATEDIFF将根据此处的规范返回几乎所有datepart: