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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

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

PG Doc comments form
The following bug has been logged on the website:

Bug reference:      16238
Logged by:          Nick Memos
Email address:      [hidden email]
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!

Reply | Threaded
Open this post in threaded view
|

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

hubert depesz lubaczewski-2
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



Reply | Threaded
Open this post in threaded view
|

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

Tom Lane-2
In reply to this post by PG Doc comments form
PG Bug reporting form <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

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

Nick Memos
Ok thanks Tom!

Αποκτήστε το Outlook για Android


From: Tom Lane <[hidden email]>
Sent: Thursday, January 30, 2020 6:27:02 PM
To: [hidden email] <[hidden email]>
Cc: [hidden email] <[hidden email]>
Subject: Re: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly
 
PG Bug reporting form <[hidden email]> 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