BUG #16238: Function " to_char(timestamp, text) " doesn't work properly

Started by PG Bug reporting formabout 6 years ago4 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 16238
Logged by: Nick Memos
Email address: memnik@hotmail.com
PostgreSQL version: 10.7
Operating system: Windows 10
Description:

Hello,
I have created a table with a json column. Where in this json i have some
details for each day of the week. It is something like this '{"Monday":
13,"Tuesday": 13,"Wednesday": 13, "Thursday ": 12, "Friday": 13,"Saturday":
13,"Sunday": 13}'::json.
So, when i try to get the information for each day by this way: '{"Monday":
13,"Tuesday": 13,"Wednesday": 13, "Thursday ": 12, "Friday": 13,"Saturday":
13,"Sunday": 13}'::json->>to_char(current_timestamp,'Day') , i don't get the
results for all days. As i noticed the problem is that the function "
to_char(timestamp, text) " doesn't work properly. For example this query "
select to_char('2020-01-29'::date,'Day') " give me this result "Wednesday",
but this query " select to_char('2020-01-31'::date,'Day') " give me this
result "Friday ".
So, i guess it is not right to have days with many spaces as a result and
some days without any space.
Now i will user trim() function but it is better to fix that if it is
possible.
Thanks!

In reply to: PG Bug reporting form (#1)
Re: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly

On Thu, Jan 30, 2020 at 11:49:45AM +0000, PG Bug reporting form wrote:

For example this query "
select to_char('2020-01-29'::date,'Day') " give me this result "Wednesday",
but this query " select to_char('2020-01-31'::date,'Day') " give me this
result "Friday ".
So, i guess it is not right to have days with many spaces as a result and
some days without any space.

First of all - it's not a bug - function works exactly as documented:
https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE
says:

"Day" -> full capitalized day name (blank-padded to 9 chars).

If you don't want the padding, use FM modifier, like:

select to_char('2020-01-31'::date,'FMDay');

Best regards,

depesz

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly

PG Bug reporting form <noreply@postgresql.org> writes:

As i noticed the problem is that the function "
to_char(timestamp, text) " doesn't work properly. For example this query "
select to_char('2020-01-29'::date,'Day') " give me this result "Wednesday",
but this query " select to_char('2020-01-31'::date,'Day') " give me this
result "Friday ".
So, i guess it is not right to have days with many spaces as a result and
some days without any space.

No, that's behaving as expected and documented. If you don't want
fixed-width output, use the FM prefix:

=# select to_char('2020-01-31'::date,'-Day-');
to_char
-------------
-Friday -
(1 row)

=# select to_char('2020-01-31'::date,'-FMDay-');
to_char
----------
-Friday-
(1 row)

regards, tom lane

#4Nick Memos
memnik@hotmail.com
In reply to: Tom Lane (#3)
Re: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly

Ok thanks Tom!

Αποκτήστε το Outlook για Android<https://aka.ms/ghei36&gt;

________________________________
From: Tom Lane <tgl@sss.pgh.pa.us>
Sent: Thursday, January 30, 2020 6:27:02 PM
To: memnik@hotmail.com <memnik@hotmail.com>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly

PG Bug reporting form <noreply@postgresql.org> writes:

As i noticed the problem is that the function "
to_char(timestamp, text) " doesn't work properly. For example this query "
select to_char('2020-01-29'::date,'Day') " give me this result "Wednesday",
but this query " select to_char('2020-01-31'::date,'Day') " give me this
result "Friday ".
So, i guess it is not right to have days with many spaces as a result and
some days without any space.

No, that's behaving as expected and documented. If you don't want
fixed-width output, use the FM prefix:

=# select to_char('2020-01-31'::date,'-Day-');
to_char
-------------
-Friday -
(1 row)

=# select to_char('2020-01-31'::date,'-FMDay-');
to_char
----------
-Friday-
(1 row)

regards, tom lane