• ベストアンサー

V7.4.6のtimestamp型について

はじめまして。 どなたかご存知であれば教えてください。 現在私はPostgres7.4.6を使用しています。 テーブルを作成した際にtimestamp型のフィールドを一つ作っておいたのですが、このフィールドサイズを見ると254Byteとなっていました。 調べてみてもtimestamp型は8Byteだと記述されていて、 なぜ254も取られるのかがわかりません。 解るかたいらっしゃいましたらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1回答者です。 PostgreSQL 8.0を使用していますが、timestampの長さは8と表示されます。 CSEを試しにダウンロードして使ってみました(ver1.59)が、「テーブルレイアウトを確認」とは、どの操作のことでしょうか? 「プロパティ」の「フィールド」タブでの表示なら、私の環境では、長さは8と表示されます。 CSEの表示で分かったのですが、CSEはPostgreSQLのシステムカタログ(http://www.postgresql.jp/document/pg746doc/html/catalogs.html)のpg_typeやpg_attributeを参照しています。 長さの所に、可変長の場合は負の値が入っていたりと、特殊な管理がされています。 >PostgreSQLは、ユーザ表内にシステム用のフィールドをたくさん作ります。 >これはどういう意味なのでしょうか。 上述のpg_type等を検索すると分かるのですが、PostgreSQLは、oidなどいくつかのシステム用のフィールドをユーザの表内部に作成するようです。 表の列構成(列のデータ型)は、どんな内容でしょうか?

bary
質問者

お礼

回答ありがとうございます。 曖昧な表現で申し訳ありません。 「テーブルレイアウトを確認」とはおっしゃるとおり「プロパティ」の「フィールド」タブでの表示の事です。 指示通り、pg_typeで確認したときのtimestamp型の長さの所には8バイトになっていました。 ここで8となっているのに何故作成したら254になるのだろう・・・。 ともあれシステムカタログについては何も知らなかったので勉強になりました。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

何をどのような方法で見て、そう判断したのでしょうか? PostgreSQLは、ユーザ表内にシステム用のフィールドをたくさん作ります。 システムカタログの参照方法も、単純ではありません。 参照方法を、誤っていないでしょうか?

bary
質問者

補足

回答ありがとうございます。 調べたというのは本やインターネットのサイトで、ということです。 データ型はIntなら4バイト、Textなら8190バイト、dateで6バイトというように可変型で無い限りはそれぞれ決まったデータ長を持っているとおもいます。 ではtimestamp型は何バイトなのかと調べた結果、timestamp型は8バイトであるという結果しか見つけることしかできませんでした。 しかし、私の場合はtimestamp型で定義すると254バイトできられてしまうのです。 254バイトというのを確認した方法は、普段使っている「Common SQL Environment」というDB用のツールでテーブルレイアウトを確認という方法と、 アクセスでリンクし、データ長を確認した二つの方法です。 どちらも254バイトという結果が得られました。 >PostgreSQLは、ユーザ表内にシステム用のフィールドをたくさん作ります。 これはどういう意味なのでしょうか。 ご指南いただければ幸いです。

すると、全ての回答が全文表示されます。

関連するQ&A