2017-08-29 79 views
3

如何獲得SQL Server中的兩個日期之間的小時數如何獲得SQL

例中的兩個日期之間的小時數:

staffing_start_date (2017-08-01 06:00:00.00000) 
staffing_end_dt (2017-08-01 18:00:00.00000) 
+1

[如何獲取SQL Server中兩個日期之間的總小時數?](https://stackoverflow.com/questions/2475178/how-to-get-total-number-of-hours-between -two-dates-in-sql-server) – scsimon

回答

5

你會使用datediff()

select datediff(hour, staffing_start_date, staffing_end_date) 
2

如果你需要的分數小時數,你可以使用下面

DATEDIFF(second, staffing_start_date, staffing_end_date)/3600.0 
+0

這正是我所需要的。謝謝。 – Tburg

+0

不客氣。您可以檢查這是關閉此查詢的答案。謝謝。 –

0

請注意則DateDiff的意外疑難雜症的雖然。它根本沒有四捨五入。它會截斷到你正在尋找的水平(日,小時,分鐘等)

例如,這兩個都會返回1,所以四捨五入費迪南德的答案在大多數情況下更合適。

declare @Start DateTime = '1/1/17 7:59 AM' 
Declare @End Datetime = '1/1/17 8:00 AM' 
select DATEDIFF(hour, @Start, @end) 


declare @Start DateTime = '1/1/17 7:01 AM' 
Declare @End Datetime = '1/1/17 8:59 AM' 
select DATEDIFF(hour, @Start, @end) 
0

謝謝@Jay Wheeler您的意見。

如果你想要小時,是非常具體的,你可以使用,如下所示: Declare @Start DateTime = '1/1/17 7:59 AM' Declare @End Datetime = '1/1/17 8:00 AM' select DATEDIFF(MINUTE, @Start, @end) /60 AS Hour

0

萬一你不明白其他的答案,你可以使用DATEDIFF

0

日期只是數字。數字的組成部分是日期,分數是時間。要獲得天的差異,你可以直接轉換爲int和乘以24

DECLARE @Date1 DateTime 
DECLARE @Date2 DateTime 

SELECT @Date1 = {ts '2017-08-29 00:00:00.000'}, 
     @Date2 = {ts '2017-08-27 00:00:00.000'} 

SELECT CONVERT(int, @Date1) - CONVERT(int, @Date2)  AS DifferenceInDays 

SELECT (CONVERT(int, @Date1) - CONVERT(int, @Date2)) * 24 AS DifferenceInHours 

得到以小時爲單位的不同或者你可以使用DATEDIFF