久保@茅ヶ崎市です。

KUBO Takehiro <kubo / jiubao.org> writes:

>> TIMESTAMP 型にアクセスすると、下記のエラーになります。
>> VERCHAR2, DATE, NUMBER は問題無いようです。
(snip)
> として無条件で文字列として定義すればなんとかなるかもしれません。

別解としては、TimeStamp 型を直接 select せずに、TO_CHAR 等で明示的に
型変換させるという手もあります。

ruby 側に対応する型がない場合は、それ専用の ruby のクラスを用意するか
文字列として取り出すしかないわけです。そして文字列として取り出す場合は、
暗黙の型変換にたよると環境が変わったときに書式が変わってしまうかもしれ
ません。

TimeStamp 型を使ったことはないのですが、断言はできませんが、少なくとも
DATE 型を使用する場合は暗黙の型変換を使ってしまうと、使用しているマシ
ンの NLS_DATE_FORMAT に従って暗黙の型変換後の書式が変わってしまいます。
ある書式を前提にしたアプリケーションを作ってしまうと、NLS_DATE_FORMAT
の違う別のマシンでは動かないということがおこります。アプリケーションで
使用する場合は暗黙の型変換は利用せずに TO_CHAR で明示的に型変換させる
のが鉄則です。

> うーむ、どちらをデフォルトにするべきか....。

アプリケーションとして使う場合は暗黙の型変換は利用しないほうが良いので、
エラーにしたのが良いけど、単に表示させたい場合は暗黙の型変換させたほう
が楽。どちらかをデフォルトにして、オプションで選択できるようにしたのが
良いかな。

では、再見
-- 
神奈川県茅ヶ崎市在住 久保 健洋
email: kubo / jiubao.org
web:   http://www.jiubao.org
GnuPG fingerprint = 5F7B C8EF CA16 57D0 FDE1  9F47 C001 1F93 AC08 2262