2010-08-03 6 views

Répondre

6
select extract(epoch from my_timestamp) 

Cette fonction retourne le temps en secondes. Cependant, il s'agit d'un nombre décimal avec des fractions de la seconde après la virgule décimale. En savoir plus sur la précision ci-dessous.

Pour Millis, utilisez:

select extract(epoch from my_timestamp)*1000 

Test:

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

Note sur la précision

extract renvoie un nombre "double précision", ce qui correspond à 15 chiffres dans Postgres. Cela signifie qu'environ 2016 (au moment où j'écris ceci), la précision réelle est de 10 microsecondes. Notez la façon dont il complète le dernier chiffre:

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

Pour les dates comme 270 ans dans le futur, ce type de données ne seront en mesure de représenter la précision de 100 microsecondes. On dirait une précision décente du point de vue de 2016, et je suppose que les choses pourraient changer un peu avant d'atteindre cette année.

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

De toute façon, il continuera à travailler très bien pour milliseconde précision pendant un certain temps.

+0

génial! ça marche, merci l'homme! – Kamilos

+0

Cette suggestion n'aide pas si vous avez besoin d'une précision de millisecondes – Wiebke

+0

@Wiebke Il le fait. Voyez si la réponse mise à jour l'explique mieux. –

Questions connexes