Получить сумму столбца времени на сервере SQL - PullRequest
0 голосов
/ 26 сентября 2019

https://i.stack.imgur.com/wUwxR.png

То, что я попробовал, это:

select  cast(sum(datediff(second,0,totalhr))/3600 as varchar(12)) + ':' + 
    right('0' + cast(sum(datediff(second,0,totalhr))/60%60 as varchar(2)),2) +
    ':' + right('0' + cast(sum(datediff(second,0,totalhr))%60 as varchar(2)),2) as total
    FROM   checkinout  where  YEAR(date)=2019 and  MONTH(date)=09 and userid=5

Это дает неправильный вывод 112: 53: 04 правильный ответ должен быть 116: 30: 04

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Если тип столбца totalhr - время, а формат - hh:mm:ss,

Для SQL Server: DATEADD (datepart, number, date)

SELECT DATEADD (ms, SUM (DATEDIFF (ms, '00:00:00.000', totalhr)), '00:00:00.000') AS total
FROM checkinout
WHERE
YEAR(date) = 2019 AND
MONTH(date) = 9 AND
userid = 5;

Эта функция добавляет указанное числовое значение (в виде целого числа со знаком) к указанной части даты входного значения даты, а затем возвращает это измененное значение.

указанное выше условие возвращает вычисленные дату и время, ноесли вы хотите просто чч: мм: сс в двухзначном формате, вы можете использовать:

SELECT FORMAT(hrs, '0#') + ':' + FORMAT(mins, '0#') + ':' +  FORMAT(secs, '0#') as total FROM
(SELECT hrs + (((((mins * 60) + (secs - (secs % 60))) / 60) - ((((mins * 60) + (secs - (secs % 60))) / 60) % 60)) / 60) AS hrs,
       (((mins * 60) + (secs - (secs % 60))) / 60) % 60 AS mins,
       secs % 60 AS secs
FROM (
SELECT SUM(116) AS hrs, // you have to replace the number with your column
       SUM(30) AS mins, // you have to replace the number with your column
       SUM(04) AS secs // you have to replace the number with your column
) AS dateSplit) AS total
0 голосов
/ 26 сентября 2019

попробуйте выполнить ниже запроса

 SELECT cast(sum(DATEPART(HOUR,totalhr)) as varchar(max)) + ':' + 
    cast(sum(DATEPART(MINUTE,totalhr)) as varchar(max)) + ':' + 
    cast(sum(DATEPART(SECOND,totalhr)) as varchar(max)) FROM checkinout
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...