[英]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.