2010-08-03 169 views

回答

6
select extract(epoch from my_timestamp) 

這會返回以秒爲單位的時間。但是,它是小數點後第二個小數的小數。閱讀更多關於下面的精度。

對於米利斯,使用方法:

select extract(epoch from my_timestamp)*1000 

測試:精密

select my_date, 
extract(epoch from my_date)*interval'1s'+'epoch'::timestamp at time zone 'GMT' 

注意

extract返回 「雙精度」 號,它符合15位的Postgres的。這意味着在2016年左右(我寫這篇文章的時候),實際的精度是10微秒。注意它是如何四捨五入的最後一位數字:

select extract('epoch' from '2016-09-20T11:22:33.456789Z'::timestamp); 
    date_part  
------------------ 
1474370553.45679 
(1 row) 

對於像270年在未來一段時間內,該數據類型將只能代表100微秒精度。從2016年的角度來看,這看起來像是一個不錯的精確度,我猜在我們到達那一年之前情況可能會有所改變。

select extract('epoch' from '2290-09-20T11:22:33.456789Z'::timestamp); 
    date_part  
------------------ 
10120936953.4568 
(1 row) 

無論哪種方式,它會繼續工作,只是罰款毫秒精度一會兒。

+0

太棒了!它的工作原理,謝謝你! – Kamilos 2010-08-03 09:30:15

+0

如果你需要毫秒精度,這個建議不起作用 – Wiebke 2016-09-13 13:46:23

+0

@Wiebke它的確如此。看看更新的答案是否更好地解釋它。 – 2016-09-20 14:37:37