Обсуждение: 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