源平面文件具有 :00:00 格式和 0:00:00 格式的持续时间列。当小时中没有前导零时尝试转换为秒。在记事本++中查看时的源文件示例 在此处输入图像描述](https://i.sstatic.net/62SvtuBM.png)
我已尝试使用派生列将以下内容转换为秒:
(DT_I4)(DT_STR,8,1254)LEN(时间) == 8 ? ((DT_I4)(DT_STR,8,1254)LEFT(时间,2) * 3600) + ((DT_I4)(DT_STR,8,1254)SUBSTRING(时间,4,2) * 60) + ((DT_I4)(DT_STR ,8,1254)RIGHT(时间,2)) : ((DT_I4)(DT_STR,8,1254)LEN(时间) == 6 ? ((DT_I4)(DT_STR,8,1254)SUBSTRING(时间,2,2 ) * 60) + ((DT_I4)(DT_STR,8,1254)右(时间,2)) : ((DT_I4)(DT_STR,8,1254)右(时间,2)))
但没有得到想要的结果,而是得到这个
结果应该是这样的:
时间 | 时间结果 |
---|---|
1:00:00 | 3600 |
:30:00 | 1800 |
:53:14 | 3194 |
我认为你的表达很好,除了你需要另一种长度为 7 的时间值的情况,比如 1:00:00。对于 :00:00 这样的值,您有 6 个,对于 10:00:00 这样的值,您有 8 个,但您需要一个对于 7 个长度值。
试试这个:
(DT_I4)(DT_STR,8,1254)LEN(TIME) == 8 ? ((DT_I4)(DT_STR,8,1254)LEFT(TIME,2) * 3600) + ((DT_I4)(DT_STR,8,1254)SUBSTRING(TIME,4,2) * 60) + ((DT_I4)(DT_STR,8,1254)RIGHT(TIME,2)) : (DT_I4)(DT_STR,8,1254)LEN(TIME) == 7 ? ((DT_I4)(DT_STR,8,1254)LEFT(TIME,1) * 3600) + ((DT_I4)(DT_STR,8,1254)SUBSTRING(TIME,3,2) * 60) + ((DT_I4)(DT_STR,8,1254)RIGHT(TIME,2)) : (DT_I4)(DT_STR,8,1254)LEN(TIME) == 6 ? ((DT_I4)(DT_STR,8,1254)SUBSTRING(TIME,2,2) * 60) + ((DT_I4)(DT_STR,8,1254)RIGHT(TIME,2)) : (DT_I4)(DT_STR,8,1254)RIGHT(TIME,2)