[pgsql-jp: 32266] Re: timestamp型

SUGIMURA Takashi 杉村 貴士 sugimura @ yasudakei.org
2004年 2月 14日 (土) 02:21:17 JST


杉村です。

> timestamp型でテーブルを作成し、年月日 時分秒 のデータを追加します。
> すると、下記をみてもらうとわかるのですが
> 秒の後ろに「+09」というのがついています。
> これはなんなのでしょうか?又つかないようにできるのでしょうか?
> 

timezone ですね。日本時間です。

以前は付いていたような気がするのですが、
手元の 7.4.1 では再現しません。

hoge=# create table t_test (hizuke timestamp);
CREATE TABLE
hoge=# insert into t_test values('2004-02-13 21:01:23');
INSERT 17205 1
hoge=# select * from t_test;
       hizuke        
---------------------
 2004-02-13 21:01:23
(1 row)


+09 が付かないのはなんでだろうということで調べてみると、
without time zone がデフォルトになっているんですね。

hoge=# \d t_test
              Table "public.t_test"
 Column |            Type             | Modifiers 
--------+-----------------------------+-----------
 hizuke | timestamp without time zone | 


そこで、 with time zone で作り直してみました。

hoge=# drop table t_test ;
DROP TABLE
hoge=# create table t_test (hizuke timestamp with time zone);
CREATE TABLE
hoge=# insert into t_test values('2004-02-13 21:01:23');
INSERT 17208 1
hoge=# select * from t_test;
         hizuke         
------------------------
 2004-02-13 21:01:23+09
(1 row)


結論としては、to_char() 関数を使えば良いのではないかと思います。

hoge=# select to_char(hizuke, 'YYYY-MM-DD HH24:MI:SS') from t_test;
       to_char       
---------------------
 2004-02-13 21:01:23
(1 row)


長くなりましたね。

---
杉村 貴士 <sugimura @ YasudaKei.org> http://YasudaKei.org/



pgsql-jp メーリングリストの案内