将hh:mm:ss转换为数字秒

时间:2014-10-16 18:58:36

标签: time bids ssis-2008

我使用BIDS [SQL Server 2008r2]从csv导入数据。我需要将hh:mm:ss转换为数字以导入SQL Server。例如

00:01:05 = 65

当前步骤:

enter image description here

转化看起来像这样。 DataConversion

2 个答案:

答案 0 :(得分:2)

假设您正在讨论SQL Server Integration Services,您可以通过派生列转换来实现此目的。

Derived Column Transformation拖到数据流管道中,然后连接源。

enter image description here

打开它并添加一个新字段,为其命名并选择<add as new column>。将以下公式粘贴到表达式框中,替换&#39; SrcTime&#39;使用您的字段名称:此表达式将时间字段转换为小数分钟(例如,01:01:30变为61.5)

(DT_NUMERIC,6,2)(((DT_I4)LEFT(SrcTime,2) * 60) + 
((DT_I4)SUBSTRING(SrcTime,4,2)) + 
((DT_NUMERIC,4,2)RIGHT(SrcTime,2) / 60))

编辑:如果你需要它在几秒钟内,而不是几分钟(01:01:30变成3690.00),你可以改变公式:

(DT_NUMERIC,10,2)(((DT_I4)LEFT(SrcTime,2) * 3600) + 
((DT_I4)SUBSTRING(SrcTime,4,2) * 60 ) + 
((DT_NUMERIC,4,2)RIGHT(SrcTime,2)))

再次编辑:根据您的版本,表达式编辑器中不提供LEFT()功能。请改用此公式:

(DT_NUMERIC,10,2)(((DT_I4)SUBSTRING([TALK TIME],1,2) * 3600) + 
((DT_I4)SUBSTRING([TALK TIME],4,2) * 60) + 
((DT_NUMERIC,4,2)RIGHT([TALK TIME],2)))

enter image description here 这将为您的管道添加一个新列,其中包含您在“派生列名称”中提供的名称,其格式正确。

答案 1 :(得分:0)

这也可以通过在时间戳中转换字符串数据类型来实现。然后在派生列表达式中使用以下表达式:

DatePart(&#34; Hh&#34;,[Talk Time])* 3600 + DatePart(&#34; mi&#34;,[Talk time])* 60 + DatePart(&#34; ss&#34 ;,[谈话时间])

上面的表达式将返回数字

中的数字数据