将日期时间转换为 INT 以便在 SQL 中求和小时和分钟

时间:2021-05-25 15:00:40

标签: sql-server

我正在尝试对两列求和,这两列的数据类型都是 DateTime,我已经将其转换为 varchar

我现在遇到的问题是,当我尝试转换为 int 然后 SUM 两列时,我收到以下错误:

<块引用>

将 varchar 值 '00:00:00' 转换为数据类型 int 时转换失败

代码:

CONVERT(varchar(8), dbo.AlteracoesSaldos.SaldoInicial, 108) AS Time1, CONVERT(varchar(8), dbo.alteracoessaldos.SaldoPeriodo, 108) AS Time2

enter image description here

我已按如下方式尝试过此查询:

SUM(CAST(CONVERT(varchar(8), dbo.AlteracoesSaldos.SaldoInicial, 108) AS int) 
    + CAST(CONVERT(varchar(8), dbo.alteracoessaldos.SaldoPeriodo, 108) AS int)) AS Soma

但是我收到了我在帖子顶部提到的错误。

我的目标是将小时和分钟相加,如下所示:

16:33 + 18:14 = 34:47

谢谢!

2 个答案:

答案 0 :(得分:1)

由于预期结果“34:47”不是正确的时间格式,您将不得不采用 Larnus 的想法将值转换为秒。此外,结果将是 varchar / char。以下是如何实现预期结果的示例:

DECLARE @t TABLE(
x time, y time
)

INSERT INTO @t VALUES('16:33:15.000', '18:14:00.000')

SELECT *
      ,CONCAT((DATEDIFF(SECOND, '00:00:00.000', x)+DATEDIFF(SECOND, '00:00:00.000', y))/(60*60)
             ,':'
             ,((DATEDIFF(SECOND, '00:00:00.000', x)+DATEDIFF(SECOND, '00:00:00.000', y))%(60*60))/60
             ,':'
             ,((DATEDIFF(SECOND, '00:00:00.000', x)+DATEDIFF(SECOND, '00:00:00.000', y))%(60*60))%60
             ) TotalTime
  FROM @t

答案 1 :(得分:-2)

下面可能会帮助你,但它在mysql中

视图 detail_view 将持续时间作为时间内容:

+----------+
| mytime |
+----------+
| 00:02:07 |
| 00:05:45 |
| 00:01:15 |
| 00:13:09 |
| 00:35:45 |
| 00:11:29 |
| 00:03:54 |
| 00:01:27 |
| 00:10:53 |
+----------+

SELECT SEC_TO_TIME(SUM(SECOND(mytime))) FROM detail_view;

+----------------------------------+
| SEC_TO_TIME(SUM(SECOND(mytime))) |
+----------------------------------+
| 00:04:44 |
+----------------------------------+

有关详细信息,请参阅this