第一步是从你的每一个约会中提取你可以做的时间
CAST(Total AS TIME)
,由于无法将时间相加,下一步是找出从您的时间到午夜的毫秒数(或秒数或分钟数,具体取决于您希望的准确度):
SELECT Diff = DATEDIFF(MILLISECOND, '00:00:00', CAST(t.Total AS TIME))
FROM (VALUES
(CAST('1899-12-30 07:56:00.000' AS DATETIME2)),
(CAST('1899-12-30 03:52:00.000' AS DATETIME2))
) t (Total);
这给出了:
Diff
---------
28560000
13920000
然后可以将这些值相加
42480000
,则如果将此毫秒数添加回午夜:
SELECT DATEADD(MILLISECOND, 42480000, CAST('00:00:00' AS TIME))
你得到了
11:48
。因此,您的最终查询将类似于:
SELECT Val = DATEADD(MILLISECOND,
SUM(DATEDIFF(MILLISECOND, '00:00:00', CAST(t.Total AS TIME))),
CAST('00:00:00' AS TIME(3)))
FROM (VALUES
(CAST('1899-12-30 07:56:00.000' AS DATETIME2)),
(CAST('1899-12-30 03:52:00.000' AS DATETIME2))
) t (Total);