Обсуждение: BUG #16238: Function " to_char(timestamp, text) " doesn't work properly
BUG #16238: Function " to_char(timestamp, text) " doesn't work properly
От
PG Bug reporting form
Дата:
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!
Re: BUG #16238: Function " to_char(timestamp, text) " doesn't workproperly
От
hubert depesz lubaczewski
Дата:
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
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
Ok thanks Tom!
Αποκτήστε το Outlook για Android
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
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
> 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