我看到类似的问题,但大多数都与日期时间或完全不同的要求有关。
我有一个 CSV 报告,其中有一个存储为 HH:MM[:SS] 的时间列(如果超过 1 天,它会添加 :00 秒......令人讨厌的是,我无法控制报告本身的运行方式。 ) 我认为,在派生列任务中,我们可以降秒。
例子:
- 23:54 = 23H 54M
- 27:35:00 = 27H 35M 00S
我的问题是:
- 如果 CSV 将列加载为文本,派生列需要什么表达式?
- 我应该像在 SQL 数据库中一样设置数据类型?
相关信息:SQL Server 2014 和 SSDT for VS 2013
谢谢你,韦斯
2) 时间/日期数据类型通常是存储持续时间的有问题的选择。而是使用整数或小数来表示任何合适的分辨率(秒或毫秒很流行,但在这种情况下分钟可能适合您)。
1) 在这种情况下,最简单的选择可能是:
(DT_I4)TOKEN(Column,":",1) * 60 + (DT_I4)TOKEN(Column,":",2)
.其他方法:
(DT_I4)SUBSTRING( [Column], 1, 2 ) * 60 + (DT_I4)SUBSTRING( [Column], 4, 2 )
.(DT_I4)SUBSTRING(Column,1,FINDSTRING(Column,":",1) - 1) * 60 + (DT_I4)SUBSTRING(Column,FINDSTRING(Column,":",1) + 1,2)