【问题标题】:SQL: Combine DATEDIFF from two columns and update the table with this timeSQL:结合两列的 DATEDIFF 并用这个时间更新表
【发布时间】:2019-01-22 11:00:48
【问题描述】:

我最近开始使用SQL,所以我还在学习,这也是我的第一个问题,非常抱歉。

我有一个表,Messages_History,包含三列tmStartTimetmEndTimetmTotal,所有数据类型为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 行。

我想计算day hh:mm:ss.xxxtmStartTimetmEndTime 列之间的差异我该怎么做?

我使用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

【问题讨论】:

    标签: sql sql-server tsql date-difference datetime2


    【解决方案1】:

    要更新表格,您不需要像您正在做的那样SELECT。您可以像以下简单查询一样实现更新。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2018-07-03
      相关资源
      最近更新 更多