簡體   English   中英

在SQL中計算小時和分鍾

[英]Calculating hours and minutes in sql

我有查詢:

SELECT    
    MemberId,  
    FirstName,LastName,  
    [DateOfChange]        
    ,(select title from StatusList where idStatus=[OldStatus]) as [OldStatus]  
    ,(select title from StatusList where idStatus=[NewStatus]) as [NewStatus]  
FROM 
    [statusLog] , Users 
WHERE
    statusLog.IdUser = Users.IdUser

在此處輸入圖片說明

我想從DateOfChange列的小時和分鍾中找到舊狀態更改和新狀態更改之間的差異。

DateOfChange             OldStatus          NewStatus     DiffernceInTime
-------------------------------------------------------------------------    
2014-04-04 16:15:20       Patrol              OnCall          ---
2014-04-04 17:20:20       OnCall              Patrol         1:05
2014-04-04 18:30:20       Patrol              Available      1:10

我寫了這個查詢:

SELECT 
   [users].MemberId,
   [users].FirstName,
   [users].LastName,
   thisLog.DateOfChange,
   statusList1.title as OldStatus,
   statuslist2.title as NewStatus,
   (SELECT TOP 1 DATEDIFF(hour, lastLog.DateOfChange, thisLog.DateOfChange)
    FROM [dbo].[statusLog] lastLog 
    WHERE lastLog.DateOfChange < thisLog.DateOfChange
    ORDER BY DateOfChange DESC) AS HoursSinceLastChange
FROM 
   [dbo].[statusLog] thisLog
INNER JOIN 
   [users] ON [users].IdUser = thisLog.IdUSer
INNER JOIN 
   StatusList statusList1 ON statusList1.idStatus = thisLog.OldStatus
INNER JOIN 
   StatusList statusList2 on statusList2.idStatus = thisLog.Newstatus
ORDER BY 
   DateOfChange DESC

但是它只計算幾個小時。 不是我上面提到的幾分鍾。

我在聯接中使用了以下表格:

Users

在此處輸入圖片說明

StatusLog

在此處輸入圖片說明

請幫我。

嘗試這個:

cast(datediff(minute,@start,@end)/60  as varchar)
+':'
+right('00'+cast(datediff(minute,@start,@end)%60 as varchar),2) [DifferenceInTime]

第一個表達式將獲得小時數差異,而第三個表達式將獲得分鍾數差異。 請注意,這是作為varchar數據類型返回的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM