2016-11-08 68 views
1

我對SQL相當不熟悉,更不用說PostgreSQL,所以非常感謝您的幫助。如何從Varchar字符串轉換爲Unix時間類型? Greenplum

比方說,我們有一個名爲ID的varchar列,它是IP地址和unix紀元時間字符串的組合。

所以,當我運行此查詢:

SELECT substring(b.id from char_length (r.IP_address)+2 for 10), b.id, r.ip_address 
FROM bq b 
INNER JOIN event r ON r.visitor_id::TEXT = b.id::TEXT 
LIMIT 3; 

輸出

substring id ip_address 
1460854333 97.128.39.256.1460854333288493 97.128.39.256 

所以串的輸出是一個UNIX時間戳,但它是一個varchar格式。如何將varchar轉換爲unix時間戳?最終我將把時間戳轉換成日期我只是不認爲我可以直接從unix字符串的varchar去日期?

+0

'to_timestamp()'函數可以很好地處理字符串數據類型 –

+0

H你會定義它的Unix元素嗎?因爲字符串不是日期格式... – CuriousLearner

+1

Greenplum使用PostgreSQL的一個非常舊的版本,在最新版本中爲8.3。 SELECT version();'你的輸出是什麼? – Patrick

回答

1

至於泰拉說,使用to_timestamp()功能:

# select to_timestamp('1460854333') ; 
     to_timestamp 
------------------------ 
2016-04-16 17:52:13-07 
(1 row) 

如果日期是你後的類型,只需添加::date投:

# select to_timestamp('1460854333')::date ; 
     to_timestamp 
------------------------ 
2016-04-16 
(1 row) 

的功能基本上是執行這個:

select ('epoch'::timestamptz + '1460854333'::float * '1 second'::interval) ; 
+0

奇怪我的postgres沒有這個功能....任何其他的工作,我可以在哪裏可以轉換該子字符串? – CuriousLearner

+0

儘管Greenplum的每個版本都應該在'pg_catalog'中有這個函數,我已經用'to_timestamp()'函數的等價語句更新了答案。請將答案標記爲已接受。 –

+0

嗨凱爾謝謝!通過 選擇to_timestamp(id :: float):: date解決了第一次運行的:: float變化。非常感謝你指點我正確的方向! 我相信這些對你來說很簡單,但對於那些剛剛學習的人來說,它非常有幫助! – CuriousLearner

相關問題