SQL: объединить DATEDIFF из двух столбцов и обновить таблицу с этим временем - PullRequest
0 голосов
/ 22 января 2019

Я недавно начал с SQL, поэтому я все еще учусь, это также мой первый вопрос, поэтому заранее извините.

У меня есть таблица, Messages_History с тремя столбцами tmStartTime, tmEndTime и tmTotal, все типы данных DATETIME2.

tmStartTime                 tmEndTime
2018-12-18 13:38:02.054     2018-12-18 13:39:56.944
2018-12-18 13:20:06.927     2018-12-18 13:42:02.024
2018-12-18 13:10:51.450     2018-12-18 13:36:34.239
2018-12-18 13:09:54.005     2018-12-18 13:19:46.741
2018-12-18 13:05:40.865     2018-12-18 13:36:48.373
2018-12-18 13:04:05.028     2018-12-18 13:08:12.073

Это может быть длиной более 10 000 строк.

Я хочу вычислить разницу между столбцами tmStartTime и tmEndTime в day hh:mm:ss.xxx Как я могу это сделать?

Я использовал DATEDIFF(datepart, tmStartTime, tmEndTime) name,, чтобы отдельно вычислить даты и показать их в таблице.Но как мне объединить их в одном столбце и обновить столбец tmTotal этими значениями?

UPDATE Messages_History
SET tmTotals = DATEDIFF (second, tmStartTime, tmEndTime); <--- this was to try updating a column with only seconds datepart.
SELECT 
    MH.nId,
    MH.tmStartTime StartTime,
    MH.tmEndTime EndTime,
    MH.tmTotal Total,
    MH.tmTotals Totals,
FROM Messages_History MH

Как объединить DATEDIFF, чтобы я мог обновить столбец таблицы Column_Total?

1 Ответ

0 голосов
/ 22 января 2019

Для обновления таблицы вам не нужно SELECT, как вы делаете.Вы можете выполнить обновление, выполнив следующий простой запрос.

UPDATE Messages_History
SET tmTotals =  
        CONVERT(varchar, DATEADD(second,  DATEDIFF(second, tmStartTime, tmEndTime), 0), 108) 
FROM Messages_History
...