■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
日付計算で差が出ます 2018/10/11 16:38 OB 2
日付の計算を、SQLPLUSとObjectBrowserでやった場合、差が出ます。

例えば下記です。

select (to_date('2018/10/09 10:45','yyyy/mm/dd hh24:mi') - to_date('2018/10/09 10:20','yyyy/mm/dd hh24:mi'))*1440 mm from dual;

SQLPLUS 25
ObjectBrowser 24.99999999999999999999999999999999999998

これはなぜでしょうか?
こんにちは。
OBサポートです。

お問い合わせいただいた件につきましてですが、SQL*Plusにより
小数値の丸め処理が行われている模様です。

以下のように、数値書式を指定することによりSI Object Browserで表示される値と
同値が返されることを確認しております。

select to_char((to_date('2018/10/09 10:45','yyyy/mm/dd hh24:mi') - to_date('2018/10/09 10:20','yyyy/mm/dd hh24:mi'))*1440, '99.99999999999999999999999999999999999999') mm from dual;

MM
------------------------------------------
24.99999999999999999999999999999999999998

なお、SQL*Plusの挙動につきましては、弊社での検証結果に基づく推測であり
情報の正確性を保証するものではございません。

恐れ入りますが、詳細につきましては別途Oracle社にお問い合わせくださいますよう
よろしくお願い申し上げます。
調査いただきありがとうございます。

いただいた情報を基に、1秒を求めてみたところ、循環小数になり、
単なる引き算では正しく計算できなさそうなことが分かりました。

1秒に満たないぎりぎりの数字を加算し、TRUNCすることで
とりあえず良いことにしました。

お手数をおかけいたしました。