Bryn Llewellyn <bryn@xxxxxxxxxxxx> writes: > There could, so easily, have been three “to_char()” overloads for these > three data types that honored the spirit of the “::text” typecast by > rendering only what’s meaningful, despite what the template asks for. You can, of course, trivially make that so in your own database. =# create function to_char(date, text) returns text language sql stable strict parallel safe as 'select pg_catalog.to_char($1::timestamp without time zone, $2)'; =# select to_char(current_date, 'dd-Mon-yyyy TZH:TZM'); to_char -------------------- 22-Oct-2021 +00:00 (1 row) Regardless of whether the original choice not to have this variant was intentional or an oversight, I'd be pretty loath to change it now because of backwards compatibility. But Postgres is adaptable. regards, tom lane