我正在尝试对两列求和,这两列的数据类型都是 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
我已按如下方式尝试过此查询:
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
谢谢!
答案 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)
视图 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