Re: INTERVAL MINUTE TO SECOND didn't do what I thought it would do - Mailing list pgsql-general

From Adrian Klaver
Subject Re: INTERVAL MINUTE TO SECOND didn't do what I thought it would do
Date
Msg-id 8c663eab-6dbd-44f1-a8b5-d25a6a227ea9@aklaver.com
Whole thread Raw
In response to INTERVAL MINUTE TO SECOND didn't do what I thought it would do  (Ron Johnson <ronljohnsonjr@gmail.com>)
Responses Re: INTERVAL MINUTE TO SECOND didn't do what I thought it would do
List pgsql-general

On 1/8/25 11:00 AM, Ron Johnson wrote:
> PG 14.13
> 
> The goal of "(now() - query_start)::INTERVAL MINUTE TO SECOND" column is 
> to see how many minutes and seconds ago that the query started.  (Why?  
> Because that's useful to me, and the people I show the output to when 
> queries run for more than a few minutes.  We don't need to see hours and 
> days; just the total MMMMM:SS.mmm.)
> 
> I'd hoped that ::INTERVAL MINUTE TO SECOND would do the trick, but 
> MINUTE TO SECOND seems to be ignored.

 From here:

https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-INTERVAL-INPUT

"Also, field values “to the right” of the least significant field 
allowed by the fields specification are silently discarded. For example, 
writing INTERVAL '1 day 2:03:04' HOUR TO MINUTE results in dropping the 
seconds field, but not the day field."


> 
> Is there cast magic that does what I want?

The only way I can think of extract the epoch from the interval and pass 
to a function that builds what you want.


> 
> TAPc=# select pid
>         ,datname as db, usename
>         ,to_char(query_start, 'YYYY-MM-DD HH24:MI:SS.MS <http://SS.MS>') 
> as  qry_start
>         ,(now() - query_start)::INTERVAL MINUTE TO SECOND as qry_elapsed
>         ,cast(state as char(11)) as state
> from pg_stat_activity
> WHERE pid != pg_backend_pid()
> and state != 'idle';
>     pid   |  db  |  usename   |        qry_start        |       
> qry_elapsed       |    state
> ---------+------+------------+-------------------------+-------------------------+-------------
>    657996 |      | replicator | 2024-11-11 21:03:00.992 | 57 days 
> 16:38:22.342449 | active
>   4070070 | TAPc | TAP        | 2025-01-08 13:41:23.202 | 
> 00:00:00.132817         | active
>   4070069 | TAPc | TAP        | 2025-01-08 13:41:23.140 | 
> 00:00:00.194222         | active
>   4070065 | TAPc | TAP        | 2025-01-08 13:41:23.238 | 
> 00:00:00.096418         | active
> (4 rows)
> 
> 
> -- 
> Death to <Redacted>, and butter sauce.
> Don't boil me, I'm still alive.
> <Redacted> lobster!

-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: Igor Korot
Date:
Subject: Re: Postgres do not support tinyint?
Next
From: Alvaro Herrera
Date:
Subject: Re: Postgres do not support tinyint?