2012-07-05 81 views
0

我已经得到了赛车的单圈时间多行存储在Excel的格式如下:在计算时间值

1:32.9

这个例子将意味着单圈时间为1分钟,32和十分之九秒。

为了保存我的数据,我将值保存为excel中的文本格式,并且我将其上传(通过一些菜鸟excel vba代码)到sql azure数据库中,格式化为nvarchar(25)。

我想对这些值执行数学计算。主要基本的算术函数,平均值和一些简单的统计分析。

鉴于此,处理这些数据有哪些建议?鉴于我有限的SQL知识,在这一点上,我可以看到以下选项:

  1. 不知何故值转换为所有秒(上面的例子将成为92.9秒),并存储在格式化为十进制SQL列(我可以做这在T-SQL,只是建立一个看法?)

  2. 莫名其妙的值转换为时间格式的领域,但林不清楚我计算的选项将是如果我这样做

我可以合并上传期间在Excel vba中的翻译或者在T-SQL中,尽管如果我可以将其应用到视图定义并从中运行我的报告,那将是非常好的。

正确的方式来处理这个问题的建议?谢谢。

回答

2

我会通过excel公式做到这一点,并将该值设置为不同的Excel工作表列,然后加载到SQL表。

如果这是不可行的,那么你可以将数据加载到一个表,然后定义视图适应以下查询:

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

感谢您的帮助,该结束了虽然我花了一些时间来弄清楚。将时间格式从Excel上传到SQL并不容易,所以我使用了这个查询。最大的问题是,我在数据中没有值的地方有一些laptimes - 必须确保SELECT查询过滤掉了这些数据。该查询将'1:32.9'转换为'92 .900',这是以秒为单位的总和。再次感谢。 – 2012-07-06 06:03:22

+0

最后一个注释...上面的查询由92.900创建,但仍然是varchar。将CAST ...语句与CAST级别相加以将最终值更改为数字需要能够执行数学函数。 – 2012-07-06 06:53:50