-3

我有 timediff 字段varchar

我想找到这个字段的总和,但它给出的错误是

"Syntax error converting the varchar value '02:00' to a column of data type int."

我的时间差就像

02:00
03:00
04:00

我想添加并应该9在 sql 中显示

请帮我

谢谢你帮助我

4

3 回答 3

0

您不能SUM在 varchar 列上使用。看看这里的文档。

您没有向我们提供有关您存储的内容或您希望它如何求和的太多信息,但您最好的选择可能是解析冒号之前的数字,将其转换为 int 并将其相加。

祝你好运!

于 2012-08-11T05:22:59.537 回答
0

如果您在谈论MS SQL

你可以做这样的事情

首先通过这个将你的小时表示转换为分钟

select (CONVERT(int,SUBSTRING('02:00',1,2))*60) +
         CONVERT(int,SUBSTRING('02:00',4,2))

然后使用该分钟表示来执行这样的加法

select 
DATEADD(
    minute,
    (select (CONVERT(int,SUBSTRING('02:00',1,2))*60) +
     CONVERT(int,SUBSTRING('02:00',4,2))),
    getdate())
于 2012-08-11T05:31:13.513 回答
0

如果您的最终目标是获取所有 datadiff 记录的总和,hh:mm那么首先以分钟为单位存储 datediff,而不是hh:mm您在此处询问的。

如何在几分钟内存储 DateDiff:

SELECT DATEDIFF(second,CAST(<timepart> AS DATETIME) 
, CAST(<timepart> AS DATETIME))/60.0 AS MIN_DIFF;

例如

SELECT DATEDIFF(second,CAST('10:00 AM' AS DATETIME) 
, CAST('11:15 AM' AS DATETIME))/60.0 AS MIN_DIFF;

如何计算所有分钟的总和hh:mm

SELECT CAST((<total minutes> / 60) AS VARCHAR(8)) + ':' 
+ CAST((<total minutes> % 60) AS VARCHAR(2))

例如

SELECT CAST((390 / 60) AS VARCHAR(8)) + ':' 
+ CAST((390 % 60) AS VARCHAR(2))

请参阅此小提琴以获取所有答案。

于 2012-08-11T05:45:55.310 回答