2012-08-30 19 views
2

夥計們我在我的MySQL數據庫中存儲了unix時間戳,我使用MySQL函數FROM_UNIX()來讀取它們。FROM PostgreSQL FROM_UNIX備用

現在我正在將數據庫從MySQL遷移到PostgreSQL。在PostgreSQL中,我如何讀取unix時間戳,就像我在MySQL中使用FROM_UNIX()一樣?

回答

4

摘自from the manual

TO_TIMESTAMP(雙精度)轉換Unix紀元時間標記

如果你需要創建的時間戳的部分,使用extract功能

select extract(year from to_timestamp(1284352323)) 
+0

to_timestamp基本上將unix時間戳轉換爲可讀的PostgreSQL時間戳。我並不需要全部。我想從unix時間戳得到具體的東西。例如,我只想要時間戳的年份。在MySQL中完成像FROM_UNIXTIME(字段,「%YY」) – user1551373

+1

@ user1551373:然後使用'extract'函數從結果時間戳中獲取。 –

+0

@ user1551373'extract'是順便提及的SQL標準,並且在MySQL中也應該工作得很好。儘管在Oracle和其他數據庫中支持'to_standard',但它似乎不是。如果您的代碼需要可移植,您可能需要考慮編寫一個包裝函數。 –

2
SELECT to_char(date(to_timestamp(1195374767)),'YYYY-MM-DD'); 
  • TO_TIMESTAMP - 轉換到PostgreSQL時間戳沒有unix時間戳
  • 日期轉換日期類型
  • TO_CHAR格式輸出

http://www.postgresql.org/docs/8.1/static/functions-formatting.html

提取物可以做同樣的事情,但不能一步到位

+0

值得添加關於你正在做什麼的解釋和鏈接到文檔的簡短說明。請參閱@ a_horse_with_no_name的答案。您的答案可能會被低質量問題主持人的系統標記出來,並作爲僅提供代碼的答案而被刪除,並提供更好的答案。 –

+0

你可以把'date(...)'離開。 'TO_CHAR(TO_TIMESTAMP(1195374767), 'YYYY-MM-DD')' – haba713