2012-07-05 8 views
0

J'ai plusieurs lignes de temps au tour de course stockés dans Excel dans le format suivant:Calcul du temps des valeurs

1: 32,9

Cet exemple signifie le temps de tour était 1 minute , 32 et neuf dixièmes de seconde. Pour conserver mes données, je conserve les valeurs au format texte dans Excel et je télécharge (via un code rookie excel vba) un sql azure db dans un champ formaté comme nvarchar (25).

Je veux effectuer un calcul mathématique sur les valeurs. Principalement des fonctions arithmétiques de base, des moyennes et quelques analyses statistiques simples. Compte tenu de cela, quelles sont les suggestions pour traiter ces données? Compte tenu de ma connaissance sql limitée à ce point, je peux voir les options suivantes:

  1. convertir une certaine manière la valeur à toutes les secondes (exemple ci-dessus deviendrait 92,9 sec) et stocker dans une colonne de code SQL en décimal (puis-je faire ceci dans T-SQL et juste construire une vue?)

  2. convertir en quelque sorte la valeur à un champ au format de temps, mais Im pas clair quelles sont mes options de calcul sera si je fais

Je peux intégrer la traduction dans Excel vba pendant le téléchargement pr ou bien dans T-sql, même si ce serait génial si je pouvais travailler dans une définition de vue et exécuter mes rapports à partir de cela.

Suggestions pour la bonne façon de gérer cela? Merci.

Répondre

2

Je le ferais par l'intermédiaire de la formule d'Excel et placerais la valeur à une colonne différente de feuille d'Excel et chargerais alors à la table de SQL.

Si cela est impossible, vous pouvez charger les données à une table, puis définir une vue d'adapter la requête suivante:

WITH DummyData AS 
(
    SELECT '1:32.9' TimeText -- This can be replaced with the table that you loaded. 
) 
SELECT CAST(
     DATEPART(mi, '00:' + TimeText) * 60 + 
     DATEPART(ss, '00:' + TimeText) 
     AS VARCHAR 
     )+ '.' + 
     CAST(DATEPART(ms, '00:' + TimeText) AS VARCHAR) 
    FROM DummyData 

SQLFiddle: http://sqlfiddle.com/#!3/d41d8/2349/0

+0

Merci pour l'aide, qui a fini par travaillant même si cela m'a pris un peu de comprendre. Le téléchargement du format Time depuis Excel vers SQL n'est pas facile, j'ai donc utilisé cette requête. Le plus gros problème était que j'avais des temps au tour dans les données qui n'avaient pas de valeurs - je devais m'assurer que la requête SELECT les filtrait. Cette requête traduit '1: 32.9' en '92 .900 ', soit le total en secondes. Merci encore. –

+0

Une dernière note ... la requête ci-dessus créée par 92,900, mais c'était encore varchar. L'inclusion de l'instruction 'SELECT CAST ...' avec un niveau CAST supplémentaire pour changer la valeur finale en numérique était nécessaire pour pouvoir effectuer des fonctions mathématiques. –