在数据网格视图中将值从 long 转换为 TimeSpan(C# with SQL Server)

Converting values from long to TimeSpan in data grid view (C# with SQL Server)

我的学校项目有问题。我有一个 SQL 服务器 table,我在其中保存飞行时间(以分钟表示),以滴答形式保存(在 bigint 列中)。

在程序中,我有一个数据网格视图,我从 SQL 服务器 table 加载所有数据,现在我需要将 "flight duration" 列从滴答转换为时间(类似于 HH:mm 格式),但我不知道如何实现。

我当前用于转换列的代码如下所示,但第三行给出了关于将 'object' 转换为 'long' 的错误。

for (int i = 0; i < dgvTabla.RowCount; i++)
{
    var dt = new DateTime(dgvTabla[5, i].Value);
    string.Format("HH:mm", dt);
    dgvTabla[5, i].Value = dt;
}

有什么想法吗?谢谢!

如果您想在 SQL 服务器端转换 DURATION

例子

Declare @YourTable table (ID int,duration bigint)
Insert Into @YourTable values
 (1,600)
,(2,1365)

Select A.*
      ,AsTime   = cast(dateadd(MINUTE,duration,0) as time)
      ,AsString = format(dateadd(MINUTE,duration,0),'HH:mm')
 From  @YourTable A

Returns

ID  duration    AsTime              AsString
1   600         10:00:00.0000000    10:00
2   1365        22:45:00.0000000    22:45

您可以从Sql服务器调用并直接显示到Grid。这将更容易做到这一点。下面是示例

DECLARE @Time INT = 90
SELECT substring(CONVERT(char(8), DATEADD(MINUTE, @Time, ''), 108),0,6)

希望对您有所帮助。