2010-05-07 4 views
0

humain je besoin d'une ligne de commande qui va à l'encontre psql et fait:Imprimez horodatage comme numéro, pas lisible

psql database -c "select date_trunc('day', start) as date, avg(finish - start) as duration from things group by date order by date;" 

Mais le problème est que cela me donne la sortie lisible par l'homme, alias:

date   | duration 
---------------------+----------------- 
2010-01-11 00:00:00 | 00:24:13.826822 
2010-01-12 00:00:00 | 00:15:42.984878 
2010-01-13 00:00:00 | 00:15:37.117834 
2010-01-14 00:00:00 | 00:13:27.868552 
2010-01-15 00:00:00 | 00:09:16.018057 
2010-01-16 00:00:00 | 00:06:39.213929 

Ce que je veux, ce sont des horodatages unix en secondes (ou millisecondes) comme entiers des deux côtés. J'ai lu de la documentation mais je n'arrive pas à comprendre cela.

Répondre

1

Je lis que vous pouvez le faire avec

SELECT date_part('epoch', now()) 

donner timestamp unix

Donc dans votre cas

SELECT date_part('epoch', date_trunc('day', start) as date), 
     date_part('epoch', avg(finish - start)) as duration 
FROM things 
GROUP by date 
ORDER by date; 

Voir Date and time functions and operations dans Postgres