Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据表中所有持续时间的总和(c)#_C#_Mysql - Fatal编程技术网

C# 数据表中所有持续时间的总和(c)#

C# 数据表中所有持续时间的总和(c)#,c#,mysql,C#,Mysql,我在从数据表计算总小时数时遇到了一个问题。我希望它计算并显示为hhhh:MM:SS到文本框?我是否需要将查询字符串更改为另一种数据类型?它存储在数据库中一毫秒 用于填充数据表的MYSQL查询 SELECT Switch_Name, Extn, COUNT(*) as Total_Calls, SEC_TO_TIME(SUM(cldp_talk_time/1000)) as Talk_Time, SUM(cost/100000) as 'Total_Cost 这就是数据表中的内容 Talk_Ti

我在从数据表计算总小时数时遇到了一个问题。我希望它计算并显示为hhhh:MM:SS到文本框?我是否需要将查询字符串更改为另一种数据类型?它存储在数据库中一毫秒

用于填充数据表的MYSQL查询

SELECT Switch_Name, Extn, COUNT(*) as Total_Calls, SEC_TO_TIME(SUM(cldp_talk_time/1000)) as Talk_Time, SUM(cost/100000) as 'Total_Cost
这就是数据表中的内容

Talk_Time
16:46:11
03:56:20
03:26:55
00:50:09
00:46:48
00:17:18
00:09:55
00:00:19
我现在使用下面的命令来计算时间的总和,问题是它显示为DD HH:MM:SS,然后达到99 23:59:59的限制,然后崩溃。我试过转换成datetime,但没有什么不同

  minsclltxt.Text = callrecdt.Compute("Sum(Talk_Time)", "").ToString();
minsclltxt当前显示为

"6.13:25:33" 
我想看看

"157:25:33"

希望这是清楚的

转换为TimeSpan,计算滴答声的总和,然后根据该结果创建一个新的TimeSpan。

而不是直接调用
ToString
calculate
调用的结果,您需要将结果
TimeSpan
实例保持足够长的时间,以给出您自己的字符串格式。没有一种标准字符串格式包含“总小时数”,但
TimeSpan
将其定义为属性。下面是一个简单的控制台应用程序,演示:

static void Main(string[] args)
{
    var dt = new DataTable();
    dt.Columns.Add("Talk_Time", typeof(TimeSpan));

    for (var i = 0; i < 101; i++)
    {
        var dr = dt.NewRow();
        dr["Talk_Time"] = TimeSpan.FromDays(1);
        dt.Rows.Add(dr);
    }

    var sum = (TimeSpan)dt.Compute("Sum(Talk_Time)", "");
    Console.WriteLine("{0}:{1}:{2}", sum.TotalHours, sum.Minutes, sum.Seconds);
    Console.ReadKey();
}
static void Main(字符串[]args)
{
var dt=新数据表();
添加(“谈话时间”,类型(时间跨度));
对于(变量i=0;i<101;i++)
{
var dr=dt.NewRow();
dr[“通话时间”]=时间跨度从天(1);
dt.Rows.Add(dr);
}
var sum=(TimeSpan)dt.Compute(“sum(Talk_Time)”,“”);
WriteLine(“{0}:{1}:{2}”,sum.TotalHours,sum.Minutes,sum.Seconds);
Console.ReadKey();
}

这会将
2424:0:0
打印到控制台。

无法将其发送到hhh:MM:SS,但这样就可以了

谢谢

                var sum = (TimeSpan)callrecdt.Compute("Sum(Talk_Time)", "");
                minsclltxt.Text = String.Format("{0} Days {1} Hours {2} Minutes {3} Seconds", sum.Days,sum.Hours,sum.Minutes,sum.Seconds);

你上一篇关于设置显示时间跨度格式的文章似乎与你文章的其他部分不同。不,对不起,这是同一个问题,只是试图解释我目前正在做什么,我想看到的结果是你的问题,你不能总结过去100天的时间跨度,或者你不能按照自己的意愿显示时间跨度?这是两个不同的问题。我从来都不希望它显示为DD HH:MM:SS,但我一直在使用它,直到今天超过99天,现在我希望它显示为hhh:MM:SS。我将更新该问题。