我有 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 中显示
请帮我
谢谢你帮助我
我有 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 中显示
请帮我
谢谢你帮助我
您不能SUM
在 varchar 列上使用。看看这里的文档。
您没有向我们提供有关您存储的内容或您希望它如何求和的太多信息,但您最好的选择可能是解析冒号之前的数字,将其转换为 int 并将其相加。
祝你好运!
如果您在谈论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())
如果您的最终目标是获取所有 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))