Thread: Inserting timestamp values

Inserting timestamp values

From
"cnliou"
Date:
Hi!

Does my test result comply with the statements in section
"8.5 Date/Time Types"? My shell set local time to UTC+8
hours. I was in the impression that the query

insert into test values ('2003-2-1'::timestamp);

equals to

insert into test values ('2003-2-1'::timestamp without time
zone);

but my test results seem to show the other way.

db1=# show time zone;
 TimeZone
----------
 unknown
(1 row)

db1=# \d test
              Table "public.test"
 Column |           Type           | Modifiers
--------+--------------------------+-----------
 f1     | timestamp with time zone |

db1=# insert into test values ('2003-1-1'::timestamp);
INSERT 46230 1
db1=# select * from test;
           f1
------------------------
 2003-01-01 00:00:00+08
(1 row)

db1=# set time zone 9;
SET
db1=# insert into test values ('2003-2-1'::timestamp);
INSERT 46231 1
db1=# select * from test;
           f1
------------------------
 2003-01-01 01:00:00+09
 2003-02-01 00:00:00+09
(2 rows)

db1=# set time zone 0;
SET
db1=# select * from test;
           f1
------------------------
 2002-12-31 16:00:00+00
 2003-01-31 15:00:00+00
(2 rows)

Regards,

CN

Re: Inserting timestamp values

From
Tom Lane
Date:
"cnliou" <cnliou@so-net.net.tw> writes:
> Does my test result comply with the statements in section
> "8.5 Date/Time Types"?

I think so.  You are inserting into a timestamp-with-time-zone column,
so even though you mark the literal constant as timestamp without time
zone, it's going to be converted to timestamp with time zone.

            regards, tom lane

Re: Inserting timestamp values

From
Hannu Krosing
Date:
Tom Lane kirjutas T, 02.12.2003 kell 18:40:
> "cnliou" <cnliou@so-net.net.tw> writes:
> > Does my test result comply with the statements in section
> > "8.5 Date/Time Types"?
>
> I think so.  You are inserting into a timestamp-with-time-zone column,
> so even though you mark the literal constant as timestamp without time
> zone, it's going to be converted to timestamp with time zone.

Maybe he is wondering about it getting converted to +8 time zone even
when the time zone is 'unknown' :

> but my test results seem to show the other way.
>
> db1=# show time zone;
>  TimeZone
> ----------
>  unknown
> (1 row)
>
> db1=# \d test
>               Table "public.test"
>  Column |           Type           | Modifiers
> --------+--------------------------+-----------
>  f1     | timestamp with time zone |
>
> db1=# insert into test values ('2003-1-1'::timestamp);
> INSERT 46230 1
> db1=# select * from test;
>            f1
> ------------------------
>  2003-01-01 00:00:00+08