How it works...

Postgres stores the server start time, so we can access it directly, as follows:

postgres=# SELECT pg_postmaster_start_time(); 
pg_postmaster_start_time
----------------------------------------------
2018-01-01 19:37:41.389134+00

Then, we can write a SQL query to get the uptime, like this:

postgres=# SELECT current_timestamp - pg_postmaster_start_time(); 
?column?
--------------------------------------------------------
2 days 02:50:02.23939

Finally, we can apply some formatting:

postgres=# SELECT date_trunc('second', 
current_timestamp - pg_postmaster_start_time()) as uptime;
uptime
----------------------------
2 days 02:51:18