簡體   English   中英

Netezza-從包含文本和數字的可變varchar字段中提取時間(以秒為單位)

[英]Netezza - Extract time in seconds from varying varchar field containing text and numbers

我目前正在查看一些具有設備正常運行時間的數據,其表上的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月,即127 days, 16:05:32.00

我需要提取每行的總時間(以秒為單位),我一直在考慮使用CASE WHEN語句先查找文本(例如“ hours”),然后提取第一個數值,將其轉換為秒,然后轉換其余的數值到幾秒鍾,然后加在一起。

當然,您並不是在尋找一個完整的解決方案,而只是對可能有用的一些建議。

編輯:如果可能的話,無需更改表格即可執行此操作。

真痛苦 我的建議是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中做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM