我将timediff字段设为varchar
我想找到这个字段的总和但它给出了错误
"Syntax error converting the varchar value '02:00' to a column of data type int."
我的timediff就像
02:00
03:00
04:00
我想添加并在sql中显示9
请帮帮我
感谢帮助我
答案 0 :(得分:0)
您无法在varchar列上使用SUM
。请查看文档here。
您没有向我们提供有关您正在存储的内容或您希望如何总结的信息,但您最好的选择可能是在冒号之前解析数字,将其转换为int并将其相加。
祝你好运!答案 1 :(得分: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())
答案 2 :(得分:0)
如果你的最终目标是获得hh:mm
中所有datadiff记录的总和,那么首先在几分钟内存储datediff而不是hh:mm
你提到的here.
如何以分钟为单位存储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))