Thanks for the insights.
I have submitted a documentation comment on PostgreSQL 9.4 document,
Section 9.6, to add in examples on
to_json() and row_to_json() using now() to illustrate ISO 8601. For
examples:
postgres=# select to_json(now());
to_json
------------------------------------
"2015-01-18T01:24:24.488214+08:00"
(1 row)
postgres=# select to_json(now()::TEXT);
to_json
---------------------------------
"2015-01-18 01:24:36.881821+08"
(1 row)
ems=# select row_to_json(row(now()));
row_to_json
-------------------------------------------
{"f1":"2015-01-18T01:26:28.082628+08:00"}
(1 row)
ems=# select row_to_json(row(now()::TEXT));
row_to_json
----------------------------------------
{"f1":"2015-01-18 01:26:40.867813+08"}
(1 row)
On Sat, Jan 17, 2015 at 11:59 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> yoonghm@gmail.com writes:
> > row_to_json and to_json replace the space between date and time.
>
> This is not a bug; it's an intentional behavioral change. Per the
> third bullet point in the 9.4 release notes:
>
> * When converting values of type date, timestamp or timestamptz to JSON,
> render the values in a format compliant with ISO 8601 (Andrew Dunstan)
>
> Previously such values were rendered according to the current DateStyle
> setting; but many JSON processors require timestamps to be in ISO 8601
> format. If necessary, the previous behavior can be obtained by
> explicitly casting the datetime value to text before passing it to the
> JSON conversion function.
>
>
> regards, tom lane
>