我的桌子上有2列,包含時間進出。我需要減去它們並獲得花費的時間甚至將它們轉換爲時間或任何其他方式。如何將int轉換爲時間(例如「1930」到「19:30」),並以小時和分鐘(HH:MM)開始和結束時間之間的差異?
CREATE TABLE [dbo].[FELData](
[RCIN1] [numeric](4, 0) NOT NULL,
[RCOUT1] [numeric](4, 0) NOT NULL
) ON [PRIMARY]
RCIN1 RCOUT1 Desire Result
150 1930 17:40
615 1747 11:32
410 1830 14:20
400 1600 12:00
這裏是我迄今所做但沒有返回正確的數字
SELECT rcin1, rcout1, DATEDIFF(mi,
CAST(STUFF(RIGHT('0'+CAST(rcin1 AS VARCHAR(8)),4),3,0,':') AS DATETIME),
CAST(STUFF(RIGHT('0'+CAST(rcout1 AS VARCHAR(8)),4),3,0,':') AS DATETIME)
)/60.0 AS [Hours]
FROM FELData;
RCIN1 RCOUT1 Returning
150 1930 17.66
615 1747 11.53
410 1830 13.25
400 1600 12.83
我該如何解決這個問題?
更新
有時可能有用戶數據輸入像
RCIN1 RCOUT1 Returning
49 1930 Should return 0
感謝
權,使用權( '0000' +轉換(VARCHAR,@timeNumb),4)將是我如何確保該值是4個字符長。至於處理不良數據 - 在計算之前使用案例聲明或執行清理通行證。 – Rawheiser
您可以發佈完整的代碼@Rawheiser – cojimarmiami
沒有必要 - 一個完整的解決方案使用HABO的上面的帖子。我也不確定爲什麼49是「壞」數據 - 因爲00:49是有效時間(午夜過後49分鐘)。 – Rawheiser