как получить сумму времени как поплавок - PullRequest
0 голосов
/ 18 сентября 2018

В таблице есть столбец времени с типом данных с плавающей запятой:

40m
11m
2m
0m
3m
1m
1m

Как я могу сложить эти значения, чтобы получить его в часах и минутах?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете использовать ответ Гордона, который напрямую использует встроенную в SQL Server способность времени.В качестве альтернативы можно использовать метод "грубой силы" для вычисления количества часов и минут, представленных суммой столбца вашего времени:

WITH cte AS (
    -- strip off 'm' units and convert to numbers
    SELECT CONVERT(int, REPLACE(time, 'm', '')) AS time
    FROM yourTable
)

SELECT
    CONVERT(varchar(10), FLOOR(SUM(time) / 60)) + ':' +
    CONVERT(varchar(10), FLOOR(SUM(time) % 60)) AS timestamp
FROM cte;

Демо

Демонстрация показывает, что логика работает, даже если количество минут в вашем столбце должно превышать 24 часа.

0 голосов
/ 18 сентября 2018

Вы можете использовать dateadd(), а затем привести результат обратно ко времени:

select cast(dateadd(minute, sum(col), 0) as time)
from t;

Примечание. Это работает только до 23:59:00.Тип времени SQL Server не поддерживает большие значения.

Здесь - реекстер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...