2017-03-22 2 views
0

J'ai un problème concernant mon projet d'école. J'ai une table SQL Server où je sauvegarde la durée de vol (exprimée en minutes), enregistrée en ticks (dans une colonne bigint).Conversion de valeurs de longues vers TimeSpan dans la vue de grille de données (C# avec SQL Server)

Dans le programme j'ai un datagridview où je charge toutes les données de la table SQL Server et je dois maintenant convertir la colonne "durée de vol" de ticks en temps (quelque chose comme HH:mm format), mais j'ai aucune idée comment je pourrais y arriver.

Mon code actuel pour la conversion de la colonne ressemble à ceci, mais la troisième ligne me donne une erreur à propos de la conversion de 'objet' en '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; 
} 

Des idées? Merci!

Répondre

1

Si vous voulez convertir votre DURÉE sur le côté SQL Server

Exemple

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 

Retours

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

Vous pouvez appeler à partir Sql Server et l'afficher directement à la grille. Ce sera plus facile de le faire. Ci-dessous l'exemple

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

Espérons que cela aide.

+0

Je me suis mis en retard mais John Cappelletti m'a répondu. – user1413