之間我的數據是這樣的:DATEDIFF小時
Col1 Col2 output
09:35 16:00 6,25 <-- need help with this
我想有輸出顯示H,m
(小時,分鐘再予)
Datediff(Hours,Col1,Col2)
給我7
我不如果可能,只要使用一些簡單的函數就不想製作任何參數。
之間我的數據是這樣的:DATEDIFF小時
Col1 Col2 output
09:35 16:00 6,25 <-- need help with this
我想有輸出顯示H,m
(小時,分鐘再予)
Datediff(Hours,Col1,Col2)
給我7
我不如果可能,只要使用一些簡單的函數就不想製作任何參數。
我想,我只想做明確,通過採取以分鐘爲單位的差異,做數值計算:
select (cast(datediff(minute, col1, col2)/60 as varchar(255)) + ',' +
right('00' + cast(datediff(minute, col1, col2) % 60 as varchar(255)), 2)
)
你可以嘗試以下方法解決:
輸出的Solution 1
-- Solution 1: Mathematical correct time
CREATE TABLE #time(col1 time, col2 time)
INSERT INTO #time(col1, col2)
VALUES(N'09:35',N'16:00'),(N'8:10',N'22:44')
SELECT col1, col2, CONVERT(decimal(10,2),DATEDIFF(MINUTE,Col1,Col2))/60 as [output]
FROM #time
DROP TABLE #time
GO
-- Solution 2: Your expected value
CREATE TABLE #time(col1 time, col2 time)
INSERT INTO #time(col1, col2)
VALUES(N'09:35',N'16:00'),(N'8:10',N'22:44')
SELECT DATEDIFF(MINUTE,Col1,Col2)/60 as [hours], DATEDIFF(MINUTE,Col1,Col2)%60 as [minutes],
-- Contated values:
DATEDIFF(MINUTE,Col1,Col2)/60 + (CONVERT(decimal(10,2),DATEDIFF(MINUTE,Col1,Col2)%60))/100 as [output]
FROM #time
DROP TABLE #time
:
輸出Solution 2
的
col1 col2 output
---------------- ---------------- ---------------------------------------
09:35:00.0000000 16:00:00.0000000 6.416666
08:10:00.0000000 22:44:00.0000000 14.566666
:
hours minutes output
----------- ----------- ---------------------------------------
6 25 6.250000
14 34 14.340000
,您仍然可以圓/轉換價值以匹配您的2位數字模式 - 如果需要的話。
什麼讓以分鐘爲單位的日期diff和結果轉換到你想要的字符串:
SELECT CONCAT(DATEDIFF(MINUTE, '09:35', '16:00')/60, ':', DATEDIFF(MINUTE, '09:35', '16:00') % 60);
請注意,如果第二次col1時間大於col2時間,您將得到一個時髦結果。
通過簡單的鑄造兩次爲datetime,你可以減去他們:
SELECT
cast(cast('16:00' as datetime) - cast('09:35' as datetime) as time(0))
結果:
06:25:00
萬一你一個類似的格式(我寧願時間格式):
SELECT
stuff(left(cast(cast('16:00' as datetime)
- cast('09:35' as datetime) as time(0)), 5), 3,1,',')
結果:
06,25
你爲什麼要這樣的格式?時間格式會不會好得多?您試圖從時間中減去時間以獲得新時間,然後使用格式進行操作,而不是保留時間格式。 –