我有一個表transaction
這樣的:轉換分鐘時:分:秒在SQL
transactID Paydate DelDate vtid
24 2013-05-08 16:53:03.000 2013-05-08 17:00:28.000 8
25 2013-05-08 16:34:38.000 2013-05-08 17:00:14.000 7
我寫這樣的查詢獲得的時間差的總和:
select
v.Vtype,
SUM(DATEDIFF(MI, t.Paydate, t.DelDate)) as sum_min,
AVG(CONVERT(NUMERIC(18, 2), DATEDIFF(MI, t.Paydate, t.DelDate))) as avg_min
from
Transaction_tbl t
left join
VType_tbl v on t.vtid = v.vtid
where
t.transactID in (24, 25)
group by
v.Vtype
我在幾分鐘內獲得適當的輸出:
Vtype sum_min avg_min
----- ----------- ---------------------------------------
Normal 26 26.000000
VIP 7 7.000000
而不是獲得sum_min
列mi nutes我想在hh:mm:ss
得到輸出。所以我的期望輸出應該是這樣的:
Vtype sum_min avg_min
----- ----------- ---------------------------------------
Normal 00:26:00 26.000000
VIP 00:7:00 7.000000
獲得此我寫這樣的查詢:
SELECT
convert(varchar(10), sum(DATEDIFF(hour, t.Paydate, t.DelDate))) + ':' +
convert(varchar(10), sum(DATEDIFF(minute, t.Paydate, t.DelDate) % 60)) + ':' +
convert(varchar(10), sum(DATEDIFF(SECOND, t.Paydate, t.DelDate) % 60)) AS 'HH:MM:SS'
FROM
Transaction_tbl t
WHERE
t.transactID in (24, 25)
group by
vtid
但在我的輸出1小時就要額外費用。執行此查詢時,我得到這樣的輸出:
HH:MM:SS
--------------------------------
1:26:36
1:7:25
那麼,如何重新編寫我的查詢以獲得正確的結果呢?
'DATEDIFF(HOUR,...)'只長相在幾點鐘因爲'DelDate'有一個小時的'17'和'PayDate'有一個小時的'16',你會得到一個值'1' –
那個答案是錯的嗎? – user2603688