我目前正在查看一些具有设备正常运行时间的数据,表格上有一个CHARACTER_VARYING
字段,数据看起来像这样 -
11 hours, 02:33.00
3 days, 09:37:20.37
17 days, 16:05:32.00
58 minutes, 02.00
正如您在上面所看到的那样,它总是在数据被提取时的最高值,但它不会计入高于天数的数字,它不会在数据中提取数据。进入几个月,即127 days, 16:05:32.00
我需要提取每行的总时间(以秒为单位),我一直在考虑使用CASE WHEN
语句来查找文本,"小时"等,提取第一个数值转换为秒,然后将剩余的数值转换为秒并加在一起。
当然不是在寻找完整的解决方案,只是对可行的方法提出一些建议。
编辑:如果可能的话,如果不改变表格,则需要这样做。
答案 0 :(得分:0)
这是一种痛苦。我的建议是case
和日期/时间逻辑。我对日期/时间的Netezza特定函数不是很熟悉,但逻辑是这样的:
select (case when val like '% hours%'
then cast(substr(val, instr(val, ' ')) as int) * 60 * 60 +
-- extract the seconds from substr(val, -8, 8)
. . .
也就是说,从字符串中获取第一个数字并将其乘以适当的数量以获得秒数。使用case
分隔出字符串的每种可能格式。
然后寻找"时间"最后的组件并将其转换为秒。我不知道在Netezza如何做到这一点。